二叉树的建立及遍历
来源:互联网 发布:udp端口号可选范围 编辑:程序博客网 时间:2024/05/19 17:09
首先定义二叉树链表的节点结构:
typedef char TElemType;typedef struct BiTNode{TElemType data;struct BiTNode *lchild, *rchild;} BiTNode, *BiTree;
先序遍历创立二叉树链表,
void CreateBiTree(BiTree *T){TElemType ch;scanf("%c", &ch);if(ch == '#')*T = NULL;else{*T = (BiTree)malloc(sizeof(BiTNode));if(!*T)exit(OVERFLOW);(*T)->data = ch;CreateBiTree(&(*T)->lchild);CreateBiTree(&(*T)->rchild);}
上面的代码是当输入字符'#'时,当前节点为叶子,不再继续生成子节点,还要注意这个创建函数中的形参,是指向BiTree的指针,实际上是指向BiTNode的一个二级指针。
遍历函数如下:
前序遍历:
void PreOrderTraverse(BiTree T){if(T == NULL)return;printf("%c", T->data);PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}
中序遍历:
void InOrderTraverse(BiTree T){if(T == NULL)return;InOrderTraverse(T->lchild);printf("%c", T->data);InOrderTraverse(T->rchild);}
后序遍历:
void PostOrderTraverse(BiTree T){if(T == NULL)return;PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);printf("%c", T->data);}
验证代码:
BiTree Tree;CreateBiTree(&Tree);PreOrderTraverse(Tree);cout << endl;InOrderTraverse(Tree);cout << endl;PostOrderTraverse(Tree);cout << endl;
这里需要注意的是CreateBiTree函数中输入的参数值,输入Tree的地址值。输出结果如下图所示:
- 二叉树 的建立及遍历 过程
- 二叉树的建立及递归遍历
- 二叉树的建立及遍历
- 二叉树的建立及遍历实现
- 线索二叉树的建立及遍历
- 二叉树的建立,及相关遍历
- 二叉树的建立及递归遍历
- 二叉树的存储、遍历及建立
- 二叉树的建立及递归遍历
- 二叉树的建立及前中后序遍历
- 二叉树的建立及遍历
- 二叉树的建立及遍历
- 二叉树的建立、遍历、深度、高度及层次遍历
- 二叉树的建立及遍历(二叉树)
- 今天早上写的二叉树的建立及遍历
- 数据结构 树 二叉树的建立及遍历 C语言版
- 二叉树的先序建立及先序遍历:
- 二叉树的建立删除及三种遍历实现
- HDU 4303 Hourai Jeweled 解题报告(树状DP+统计)
- js 实现复选框(checkbox)类似单选钮(radio)点击互斥效果
- Perl 实现远程机器操作
- Java中多线程的同步机制
- s:property标签
- 二叉树的建立及遍历
- linux_shell读文件,然后排序
- ASA 5525X NAT 问题
- uc/os-II源码分析
- 防止程序多次运行
- jpa注解默认值,jpa实体默认值,jpa注解默认值没有反应
- jboss eap6.1(3)(升级struts)
- 记录
- JAVA实现AES加密