二叉树的应用
作者:互联网
1.输出二叉树中的叶子结点
在二叉树的遍历算法中增加检测结点的“左右子树是否都为空”
void PreOrderPrintLeaves( BinTree BT ) {
if( BT ) {
if ( !BT-Left && !BT->Right )
printf(“%d”, BT->Data );
PreOrderPrintLeaves ( BT->Left );
PreOrderPrintLeaves ( BT->Right );
}
}
2.求二叉树的高度 Height=max(HL, HR)+1
int PostOrderGetHeight( BinTree BT ) {
int HL, HR, MaxH;
if( BT ) {
HL = PostOrderGetHeight(BT->Left); /*求左子树的深度*/
HR = PostOrderGetHeight(BT->Right); /*求右子树的深度*/
MaxH = (HL > HR)? HL : HR; /*取左右子树较大的深度*/
return ( MaxH + 1 ); /*返回树的深度*/ }
else return 0; /* 空树深度为0 */
}
3.二元运算表达式树及其遍历
叶结点表示运算数,非叶结点是运算符号
中缀表达式会受到运算符优先级的影响,可以通过加括号来解决
4.由两种遍历序列确定二叉树(必须有中序遍历):
先序和中序来确定:
先序序列的第一个结点是根结点,可在中序序列中找到根结点,可以数出左子列有多少个元素,再到先序序列中分割出左子树,而分割出的左子树先序序列的第一个结点为左子树的根结点,继而到中序序列中找该结点
标签:左子,结点,应用,HR,BT,二叉树,HL 来源: https://blog.csdn.net/weixin_43797323/article/details/101357575