查询二叉树中的某个节点
- 在二叉树不空的前提下,和根结点的元素进行比较,若相等,则找到返回TRUE;
- 否则在左子树中进行查找,若找到,则返回TRUE;
- 否则继续在右子树中进行查找,若找到,则返回TRUE,否则返回FALSE;
bool preOrder(BiTree T, int x, BiTree &p){
//若二叉树中存在与x相同的元素
//则p指向该节点并返回OK,否则返回false
if(T){
if(T->data == x){
return true;
} else {
if(preOrder(T->lchild, x, p)){
return true;
} else {
return preOrder(T->rchild, x, p);
}
}
} else {
return false;
}
}
统计二叉树中叶子节点的个数
算法基本思想:
先序(或中序或后序)遍历二叉树,在遍历过程中查找叶子结点,并计数。由此,需在遍历算法中增添一个“计数”的参数,并将算法中“访问结点”的操作改为:若是叶子,则计数器增 1。
参数形式
void countLeaf(BiTree T, int &count){
if(T){
if(!T->lchild