一步一步建立一个二叉树
来源:互联网 发布:东芝复印机网络店 编辑:程序博客网 时间:2024/06/10 12:42
December 10, 2015 10:54 AM
第一步:创建一个二叉树结点类
class BiTNode //树结点类{ public: char data; class BiTNode *lchild, *rchild;};typedef BiTNode* BiTree; //定义一个二叉树结点
第二步:建立一棵二叉树
void CreateBiTree(BiTree *T) //创建一棵二叉树,约定用户遵照前序遍历输入数据{ char c; while(!(c = cin.get())) //判断输入是否有误,如果有误清理缓冲重新输入 { cin.clear(); //清除出错状态 cin.ignore(); //将缓冲区里边现有的数据全部丢弃 cout << "Input error!!!"<<endl; } if(c == ' ') //如果输入数据为空格,代表没有相应结点 { *T = NULL; } else //递归生成二叉树 { *T = new(BiTNode); (*T)->data = c; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); }}
第三步:二叉树遍历
void vistit(char data, int level) ////访问二叉树结点{ cout << data << "位于第" << level << "层" <<endl;}void PreTravers(BiTree T, int level) //前序遍历二叉树{ if(T) { vistit(T->data, level); //先访问根结点。然后左子树、右子树 PreTravers(T->lchild, level+1); //更改此处三句话的顺序便得到不同的遍历结果 PreTravers(T->rchild, level+1); }}
第四步:主函数运行测试
int main(int argc, char** argv) { BiTree T = NULL; //先定义一个空树 int level = 1; //从第一层开始创建 CreateBiTree(&T); //创建二叉树 PreTravers(T, level); //二叉树遍历 return 0;}
输入数据时注意:
1.本程序的输入时按照前序遍历的方式存储数据;
2.在数据读入时,遇到叶子结点,叶子结点的左右子树用空格代替,因为只有前序遍历是无法确定一棵二叉树的。
例如,对于下图所示二叉树,应输入:(ABC DE G F ),C、D之间是两个空格,E、G之间是一个空格,G和F之后是两个空格。
2 0
- 一步一步建立一个二叉树
- 一步一步建立一个单链表
- 一步一步建立一个队列
- 一步一步建立一个栈
- 一步一步复习数据机构和算法基础-二叉树创建(前序建立二叉树)
- 一步一步复习数据结构和算法基础-层次建立层次遍历二叉树
- 20170513_一步一步写数据结构(二叉树的建立和遍历)
- 一步一步写二叉查找树
- 一步一步写二叉查找树
- 根据先序遍历建立一个二叉树
- 递归建立二叉树
- 二叉树的建立
- 二叉树建立
- 中序层序建立二叉树
- 后序中序建立二叉树
- 先序中序建立二叉树
- 二叉树的建立
- 二叉树的建立
- Shell教程(五):替代、引用机制、输入输出重定向
- Effective C++学习笔记
- a为整型数组,&a+1的含义
- Ubuntu text mode boot
- c++ vector 需要注意的地方
- 一步一步建立一个二叉树
- sso跨域写cookie的一段js脚本
- nginx区分手机与电脑浏览器并进入相应站点
- Shell教程(六):函数、联机帮助
- 设计模式之中介模式
- C#怎么调用SQL Server的存储过程
- 指针数组和数组指针的详细解答
- Android blueZ HCI(二):hcitool hcidump常用方法
- 取消github信用卡绑定