【MyCpp_3】非二叉树的建立及其基本操作(括号法建立)

非二叉树的建立及其基本操作*


树不只有二叉树还可以为一个结点连接2个以上的结点,在现实事件中比比皆是,这时有非二叉树的记录和操作具有必要性。而实现思路是将非二叉树转化为二叉树存储,而读取使用时,恢复到原来的结构,即时有一种可恢复的模式转换,使得对使用者虚拟,同时代码又可以复用二叉树的基本操作方法。

1. 图示演示 非二叉树 转换为 二叉树

树的括号法建立二叉树结构
一颗树
“一棵不开花的树”

这里写图片描述
兄弟相连”:将统一父母的结点相连(蓝色)

这里写图片描述
离家出走”:如果不是大儿子(最左边的子结点),则断开与父亲的链接。应该出门自力更生。

这里写图片描述
长兄为父”:旋转兄弟使得兄长(最左边的子节点),成为其他儿子的父节点,且用右指针

**最后呈现出 ,左指针指向真正的子结点,而右指针指向兄弟(暂作称呼)。**遍历也是基于这条规则。

2.代码(基于家族族实例):

#include <iostream>
#include <string>
#include <stack>
using namespace std;

typedef struct node
{
   
    string name;
    int floor;
    struct node * rchild = NULL;
    struct node * lchild = NULL;

}people;//结点


stack<char>charStack;//字符栈
stack<people*>peoplePtrStack;//结点栈

people * CreatMarvelTree();//创建树
void PreVisitTree(people *t);//先序遍历
void DestroyTree(people *t);//清除内存
void InInformation(people *p);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值