主题:[讨论]二叉树节点求解问题
现在要求先序输出二叉树的各个节点为根的节点数
例如:
1
4 2
3 0 5 0 // 0表述没有元素
那么先序列表是 1 4 3 5 2
题目要求的输出则为 5 2 1 2 1
本人思路是先后序求出各个节点为根的节点数
再先序输出
========================================
int size(btlink t)
{
int lsize,rsize;
if(!t) return 0;
lsize=size(t->left); //左子树的节点数
rsize=size(t->right); //右子树的节点数
t->size=lsize+rsize+1; //总共的。。。
return t->size;}
void preorder(btlink t)
{
if(t)
{
printf("%d ",t->size);//先序输出题目的要求
preorder(t->left);
preorder(t->right);
}
}
====================================================
那在此本人求教有没有一次先序就能完成求节点数与输出?
大虾赐教,感激不尽————
例如:
1
4 2
3 0 5 0 // 0表述没有元素
那么先序列表是 1 4 3 5 2
题目要求的输出则为 5 2 1 2 1
本人思路是先后序求出各个节点为根的节点数
再先序输出
========================================
int size(btlink t)
{
int lsize,rsize;
if(!t) return 0;
lsize=size(t->left); //左子树的节点数
rsize=size(t->right); //右子树的节点数
t->size=lsize+rsize+1; //总共的。。。
return t->size;}
void preorder(btlink t)
{
if(t)
{
printf("%d ",t->size);//先序输出题目的要求
preorder(t->left);
preorder(t->right);
}
}
====================================================
那在此本人求教有没有一次先序就能完成求节点数与输出?
大虾赐教,感激不尽————