![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
王珂珂
这个作者很懒,什么都没留下…
展开
-
二叉树(二)-----二叉树的先、中、后序遍历的递归实现
先序递归遍历: void PreOrder(BiTree root) { if(root) { printf("%c",root->data); PreOrder(root->Lchild); PreOrder(root->Rchild); } } 中序递归遍历: void InOrder(BiTree root) { if(root) { InOrder(ro原创 2018-01-26 16:07:48 · 189 阅读 · 0 评论 -
二叉树(三)------先序非递归遍历
先序遍历: 算法思想:从根结点开始,若当前结点存在或不为空,可重复操作一下两步: (1)访问当前结点,当前结点进栈,访问其左子树,左子树不为空一直访问进栈,直到左子树为空; (2)若栈非空,则退栈顶结点,访问其右子树。 #include #include #define MAXSIZE 100 typedef char DataType; typedef struct Node {原创 2018-01-26 17:43:48 · 147 阅读 · 0 评论 -
二叉树(四)-------中序非递归遍历
中序非递归遍历: 算法1:(1)从根结点开始,当前结点存在或者栈不为空进入循环 (2)当前结点进栈,进入其左子树,重复此操作,直到当前结点为空; (3)若栈不为空,则退栈,输出当前结点,进而访问退栈结点的右子树。 void InOrder(BiTree root)//中序原创 2018-01-27 15:13:23 · 155 阅读 · 0 评论 -
二叉树(五)-----后序非递归遍历
后序非递归遍历: 后序非递归遍历和先序、中序非递归遍历主要的差别在于:当从子树返回时,如何判断该子树是从左子树返回的还是从右子树返回的,由此来确定栈顶元素的上一层结点是否应该出栈,因此,后序非递归遍历最主要的就是判断刚访问过的结点q是不是当前栈顶结点p的右孩子 (1)p没有右孩子,则表明此时应该访问根结点; (2)p的右孩子是刚被访问过的结点q,此时也应该访问根结点(定义结点q的原因是标记被原创 2018-01-27 16:38:37 · 224 阅读 · 0 评论 -
二叉树(六)----遍历算法的应用
一、先序遍历统计二叉树中的结点数: void PreOrder(BiTree root)//先序遍历统计结点个数 { if(root) { count++;//count是全局变量,初始值为0 PreOrder(root->Lchild); PreOrder(root->Rchild); } } 二、输出二叉树中的叶子结点: 因为三种遍历算法输...原创 2018-07-26 09:33:03 · 415 阅读 · 0 评论