二叉树的应用问题

【例】遍历二叉树的应用:输出二叉树中的叶子结点。


typedef struct TreeNode *BinTree;
typedef BinTree Position; 
struct TreeNode{
ElementType Data;
BinTree Left;
BinTree Right; 
}; 
BinTree BT;

void PreOrderPrintLeaves(BinTree BT)//例如先序遍历来判断左右子树是否都为空 
{
if(BT){
if(!BT->Left&&!BT->Right)//增加检测结点 
printf("%d",BT->Data);
PreOrderPrintLeaves(BT->Left);
PreOrderPrintLeaves(BT->Right);
}
}

【例】求二叉树的高度。


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 
 }

【例】二元运算表达式树及其遍历



【例】由两种遍历序列确定二叉树 









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值