关于二叉树遍历的前驱后继规则

本文探讨了二叉树遍历中寻找前驱和后继节点的方法,包括前序、中序和后序遍历。对于前序遍历,后继节点可能是左子女、右子女或特定条件下的父节点;前驱节点可能是父节点或特定情况下的左祖先。中序遍历中,后继节点取决于右子女,而前驱节点依赖于左子女。后序遍历中,后继节点与前驱节点的判断与前序遍历类似,但方向相反。这些规则帮助理解二叉树遍历的特性,并在实际问题中应用。
摘要由CSDN通过智能技术生成

二叉树遍历的递归算法和非递归算法我们当然应该很熟悉了,不过还有另外一种遍
历方式,就是增加了树的构造,然后不允许递归或是用到栈进行遍历,如线索树或者是
有父母节点的二叉树等等等等。这样的遍历就需要我们找到一个节点的后继,同样如果
有更变态的题要求我们找一个节点的前驱,也和找后继是一个类型,下面我就关于三种
遍历方法的前驱和后继作一讨论和总结,让大家在考试的时候得心应手。也请高手给与
指正
一、前序遍历
找后继:  
  1、若有左子女,则后继是左子女;
  2、若无左子女,有右子女,则后继是右子女;
  3、若既无左子女,又无右子女,则是一片叶子;再讨论:
    a若是其父母的左子女,且父母有右子女,则后继是父母的右子女。
    b若是其父母的左子女,且父母无右子女;
    c若是其父母的右子女。
    b,c都表示这是某个节点的左子树前序遍历的最后一个节点,则需要找第一
个有    右子树的“左祖先”(这个是我自己定义,即找第一个使得当前节点在这
个祖先的左    子树上),然后后继就是这个祖先的右子女。
  如何找这个左祖先?即
  while((p->parent->rchild==NULL||p->parent->rchild==p)&&p!=NULL)
    p=p-&g

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值