二叉树上结点的路径
一、求二叉树上结点的路径
1.题目要求:
求二叉树上结点的路径及二叉树的三种非递归遍历。该设计要求在采用链式存储结构存储的二叉树上,以bt指向根结点,p指向任一给定的结点,编程实现在建立的二叉树上完成的三种非递归遍历并求出从根结点到给定结点之间的路径。
2.算法分析:
分析:我们知道,在二叉树上无论采用哪种遍历方法,都能够访问遍树中的所有结点。由于访问结点的顺序不同,前序遍历和中序遍历都很难达到设计的要求,但采用后序遍历二叉树是可行的。因为后序遍历是最后访问根结点,按这个顺序将访问过的结点存储到一个顺序栈中,然后再输出即可。因此我们可非递归地后序遍历二叉树bt,当后序遍历访问到结点*p时,此时栈stack中存放的所有结点均为给定结点*p的祖先,而由这些祖先便构成了一条从根结点到结点*p之间的路径。
在这个设计题目中可以在主函数中用菜单调用的方式实现二叉树的非递归遍历。
为了实现上述的设计要求,首先要定义二叉树的链式存储结构,通常采用的方法是:每个结点中设置三个域,即值域,左指针域,和右指针域。用data表示值域,lchild和rchild 分别表示指向左右子树(孩子)的指针域。相应的类型说明为:
typedef struct node{
DataType data;
Struct node *lchild, * rchild
}BinTNode;
typedef BinTNode *BinTree
要实现二叉树的遍历,就需要建立二叉树,因此,还需要编写建立二叉树的算法。
二、二叉树的综合操作
1.题目要求:
要求对二叉树实现下列操作:
1.构造二叉链表树;
2.二叉树的前序遍历;
3.二叉树的中序遍历;
4.二叉树的后序遍历;
5.二叉树的层次遍历;
6.用广义表表示二叉树;
7.用凹入表表示二叉树;
8.求结点总数。
9.查结点;
2.算法分析:
采用递归算法,实现二叉树的相关操作。
三、赫夫曼编码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论