您的位置:首页 > 其它

二叉树三种遍历(递归的妙用)

2017-11-02 19:28 288 查看
先序遍历

void preorder(Tree r){
if(r){
printf("%c ",r->data);
preorder(r->l);
preorder(r->r);
}
}


后序遍历

void postorder(Tree r){
if(r){
preorder(r->l);
preorder(r->r);
printf("%c ",r->data);
}
}


中序遍历

void inorder(Tree r){
if(r){
preorder(r->l);
printf("%c ",r->data);
preorder(r->r);
}
}


求大于等于x的节点的个数

int count(Tree r,int x){
if(!r) return 0;
return r->data>=x+count(r->l)+count(r->r);
}


求树高

int count(Tree r){
if(!r) return 0;
int hl=count(r->l);//左子树的高度
int hr=count(r->r);//右子树的高度
return 1+hl>hr?hl:hr;//到弹栈时树高仍为0,每次弹栈加一。
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: