请教:如何在二叉树中查找度数为一的结点

snsn1984
博客专家认证
2005-08-30 09:00:08
要在二叉树中查找度数为一的结点怎么找?
希望知道的朋友能告诉我主要思想,关键代码最好也写一下吧!
先谢谢了!
...全文
212 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
snsn1984 2005-09-01
  • 打赏
  • 举报
回复
谢谢各位朋友啊!
foochow 2005-08-30
  • 打赏
  • 举报
回复
遍历一遍不就可以了:-)
heguosheng 2005-08-30
  • 打赏
  • 举报
回复
这个。。。
方法太多,随便用一个吧,只要实现遍历就OK了
snowbirdfly 2005-08-30
  • 打赏
  • 举报
回复
可以用递归算法实现~
snsn1984 2005-08-30
  • 打赏
  • 举报
回复
谢谢啊!呵呵...我光顾着想度数为一的接点有什么特别的特征了,忘了遍历的时候顺便判断一把就可以了啊!
zhouhuahai 2005-08-30
  • 打赏
  • 举报
回复
楼主只要把这段代码稍做修改便成.
1.增加二叉树的struct 定义.(BitTree)
如struct BitTree{
int data;
struct BitTree *left;
struct BitTree *right;
}BitTree;

2.遍历时增加判断条件.即左子树为空或右子树为空.
zhouhuahai 2005-08-30
  • 打赏
  • 举报
回复
先序遍历非递归算法
#define maxsize 100
typedef struct
{
Bitree Elem[maxsize];
int top;
}SqStack;

void PreOrderUnrec(Bitree t)
{
SqStack s;
StackInit(s);
p=t;

while (p!=null || !StackEmpty(s))
{
while (p!=null) //遍历左子树
{
visite(p->data);
push(s,p);
p=p->lchild;
}//endwhile

if (!StackEmpty(s)) //通过下一次循环中的内嵌while实现右子树遍历
{
p=pop(s);
p=p->rchild;
}//endif

}//endwhile

}//PreOrderUnrec
zhouhuahai 2005-08-30
  • 打赏
  • 举报
回复
用一种遍历方法(前序,后序,中序)对二叉树进行遍历,
凡是找到只有左子树或只有右子树的结点,就记录下来.
遍历都是用递归的.
如:
对T进行前序遍历是先访问树根n,然后依次前序遍历T1,T2......。

n
/ \
T1 T2
代码就不用写了吧,网上到处都是.

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧