二叉树的下一个节点(python)
一,问题描述:
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
二:情况分析:
如题中所述情况:
根据中序遍历规则,我们先看被指向的节点有无右子树
!如果有,再看右子树有没有左节点
!!如果右子树没有左节点,就返回右子树
!!如果右子树有左节点,就一直往下找左节点,直到叶子节点为止,返回叶子节点
!如果被指向节点没有右子树,就看他的父节点:
!!如果被指向节点是其父节点的左子树,就返回其父节点
!!如果被指向节点是其父节点的右子树,就继续寻找父节点的父节点
代码如下