请教:如何查找完全二叉树最后一层的最右边的结点

hertz2007 2007-01-01 11:48:00
如题。
基于数组的完全二叉树容易实现,只需返回最后一项。
但是基于指针的完全二叉树怎么实现呢?
...全文
510 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jim_King_2000 2007-01-03
  • 打赏
  • 举报
回复
先根或者中跟遍历也是可以的啦。
jaskist 2007-01-02
  • 打赏
  • 举报
回复


右子树的右子树的右子树

直到最后一层

这样不是行了吗??
hertz2007 2007-01-02
  • 打赏
  • 举报
回复
哦,我明白了。
就是说采用基于队列的广度优先遍历,每次从队列弹出已访问的结点入栈,遍历结束后在栈顶的数据项即为所求。
这种算法的复杂度的确比基于数组的复杂度大的多啊。
突击召唤师 2007-01-02
  • 打赏
  • 举报
回复
:) 用一个链表,做按层的搜索。
第一层,把根扔进链表。
第二层,找到根的L、R子节点,替换链表中的根。
第三层,找到根的L、R子节点的子节点,替换到链表中。
如此递归,如果某个节点没有子节点,就删掉了,否则就被自己的子节点替换。保持子节点从左到右的顺序。
这样到最后一层,最后一个子节点就是你要找的了。

当然实现的时候要把一层遍历完,才能删除上一层的。 :)
Jim_King_2000 2007-01-02
  • 打赏
  • 举报
回复
广度优先搜索。
ryfdizuo 2007-01-02
  • 打赏
  • 举报
回复
确实,用GoFastRight();函数寻找有点麻烦!
d_bc 2007-01-02
  • 打赏
  • 举报
回复
层次遍历和广度优先的方法是一样的。
胖奶糖 2007-01-02
  • 打赏
  • 举报
回复
按层向下可不可以?
hziee_ 2007-01-02
  • 打赏
  • 举报
回复
对,广度遍历
hertz2007 2007-01-02
  • 打赏
  • 举报
回复
不对啊,完全二叉树不一定是满二叉树啊。
在最后一层,所有结点从左至右依次无缝排列。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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