问题: 请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继).给定树的根结点指针TreeNode* root和结点的值int p,请返回值为p的结点的后继结点的值.保证结点的值大于等于零小于等于100000且没有重复值,若不存在后继返回-1.注意这里没有parent指针. 思路: 本质上还是二叉树的中序遍历.所以经过前面的学习我们有递归和非递归两种解法. 解法一(递归解法): public class Successor2 { public int findSucc(TreeNo
题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点(不存在重复数据).树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 思路: 如果当前节点有右孩子,则下一个节点是右孩子中最左子节点.如果当前节点是其父节点的左子节点,则下一个节点就是父节点(节点没有右孩子).如果当前节点是父节点的右子节点(节点没有右孩子),下一个节点:父节点是其父节点的左孩子.最后没找到的话 就说明这是最后一个,不存在他的下一个了. 代码: /*有parent的解法*/ public class S