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);
}
本文介绍了一种使用递归方法来实现二叉树某一层节点的打印及二叉树高度的计算。通过创建一个特定结构的二叉树,并采用递归遍历的方式,可以有效地实现这些功能。
1865

被折叠的 条评论
为什么被折叠?



