1、輸出二叉樹某一層上所有的節點,一般用遞歸方式解決。
2、求二叉樹的高度,也用遞歸方式解決。
/* 如何打印二叉樹某一層上的所有節點? 如何求出二叉樹的高度? */ #include <stdio.h> #include <string.h> struct Node{ int value; Node *left; Node *right; }; //構造二叉樹 void createLR(Node *pn){ if((pn->value)<50){ Node *pl=new Node; Node *pr=new Node; pl->value=(pn->value)*2; pr->value=(pn->value)*2+1; pn->left=pl; pn->right=pr; createLR(pl); createLR(pr); }else{ pn->left=NULL; pn->right=NULL; } } //打印二叉樹某一層上的所有節點? void level_sum_out(Node *p, int level){ if(!p){ return; } if(1==level){ printf("%d ",p->value); }else{ level_sum_out(p->left,level-1); level_sum_out(p->right,level-1); } } //如何求出二叉樹的高度? int getHeight(Node *p){ if(NULL==p){ return 0; }else{ int lh=getHeight(p->left); int rh=getHeight(p->right); return (lh>rh)?(lh+1):(rh+1); } } void main(){ // char a[]="abc"; // int t=strlen(a); // t=sizeof(a); //構造二叉樹 Node *pn=new Node; pn->value=1; createLR(pn); level_sum_out(pn,5); int height=getHeight(pn); printf("\n%d\n",height); }