赞
踩
整体思路就是我前面的一篇博客提到的树的孩子兄弟法。
就是对于一个节点:
和树的兄弟节点很想,只是把树的左边的树也当做根节点的兄弟
就是对于任一个节点:
二叉树转树和森林就是上面过程的逆过程。即
对于任意一个节点:
a.先根遍历
b.后根遍历
a.先序遍历
b.后序遍历
具体要求:编写算法,在以孩子兄弟二叉链表存储的树中,求树(森林)叶子节点个数。
思路: 使用二叉树的遍历算法,遍历所有节点,如果左子树为空,则说明在这个树中,该节点为叶子节点。
int Statistics(BiTree root){
static int count;
if(root==NULL)
return ;
if(root->lChild==NULL)
count++;
Statistics(root->lChild);
Statistics(root->rChild);
return count;
}
具体要求:编写算法,在以孩子兄弟二叉链表存储的树中,求树(或森林)的深度。
思路:树的深度=左子树深度+1和右子树深度中大者。
int Depth(BiTree root){
int hchild,hsibling;
if(root==NULL)
return 0;
hchild=Depth(root->lChild);
hsibling =Depth(root->rChild);
if(hchild+1>hsibling){
return hchild+1;
}else{
return hsibling;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。