遞迴求二叉樹的高度

來源:互聯網
上載者:User

用遞迴求樹的高度,哎。。。平時很少用指標,寫起來挺吃力的

#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct bnode{char data;struct bnode *lchild,*rchild;}btnode;int max(int x,int y){return x>y?x:y;}btnode *create()  //建樹{char c;btnode *t;c=getchar();if(c=='#')t=NULL;else{t=(btnode *)malloc(sizeof(btnode));t->data=c;t->lchild=create();t->rchild=create();}return t;}void print(btnode *t){if(t!=NULL){printf("%c ",t->data);print(t->lchild);print(t->rchild);}}int high(btnode *T){if(T==NULL)return 0;elsereturn max(high(T->lchild),high(T->rchild))+1;}int main(){int ans;btnode *t;t=create();print(t);printf("\n");ans=high(t);printf("樹的高度為%d\n",ans);return 0;}

也可以引用h為樹的高度

#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct bnode{char data;struct bnode *lchild,*rchild;}btnode;int max(int x,int y){return x>y?x:y;}btnode *create(){char c;btnode *t;c=getchar();if(c=='#')t=NULL;else{t=(bnode *)malloc(sizeof(btnode));t->data=c;        t->lchild=create();t->rchild=create();}return t;}void print(btnode *T){if(T!=NULL){printf("%c ",T->data);print(T->lchild);print(T->rchild);}}void high(bnode *T,int &h)    引用h為樹的高度{if(T==NULL)h=0;else{   int h1,h2;   high(T->lchild,h1);   high(T->rchild,h2);   h=max(h1,h2)+1;}}int main(){int ans;btnode *t;t=create();print(t);printf("\n");high(t,ans);printf("樹的高度為%d\n",ans);    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.