遍历二叉树的应用

1. 输出二叉树中的叶子结点:

在二叉树的遍历算法中增加检测结点的“左右子树是否都为空”。

void PreOrderPrintLeaves(BinTree BT)
{
	if(BT)
	{
		if(!BT->Leaf && !BT->Right)
		{
			printf("%d", BT->Data);
		}
		PreOrderPrintLeaves(BT->Leaf);
		PreOrderPrintLeaves(BT->Right);
	}
}
2.  求二叉树的高度:

遍历二叉树的应用_第1张图片

int PostOrderGetHeight()
{
	int HL, HR, MaxH;
	if(BT)
	{
		HL = PostOrderGetHeight(BT->Left); /*求左子树的深度*/
		HR = PostOrderGetHeight(BT->Right);/*求右子树的深度*/
		MaxH = (HL > HR) ? HL : HR; /*取左右子树较大的深度*/
		return (MaxH +1);/*返回树的深度*/*/
	}
}
3. 二元表达式树及其遍历:

遍历二叉树的应用_第2张图片

4. 由两种遍历序列确定二叉树:

必须要有中序遍历才行

1) 先序和中序遍历序列来确定一课二叉树

分析:

a) 根据先序遍历序列第一个结点确定根结点

b) 根据根结点在中序遍历序列中分割出左右两个子序列

c)  对左子树和右子树分别递归使用相同的方法继续分解。


遍历二叉树的应用_第3张图片





你可能感兴趣的:(遍历二叉树的应用)