遍历叶子结点
- 遍历之前加上对儿子的判断就好
void PreOrderTraverse(BiTree T)
{
if (T) {
if (!T->lchild && T->rchild) {
cout << T->data << " ";
}
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
求二叉树的高度
- 求高度应该使用后序遍历
- 在子树的遍历基础上返回高度,利用递归实现
int PostOrderTraverse(BiTree T)
{
if (T) {
int HL = PostOrderTraverse(T->lchild);
int HR = PostOrderTraverse(T->rchild);
int MaxH = HL > HR ? HL : HR;
return (MaxH + 1);
}
else {
return 0;
}
}
二元表达式树及其遍历
两种遍历确定二叉树
- 必有一个是中序(为了分清左右,只有先序和后序只能确定根,却无法分清左右)