首页 > 代码库 > 4.6 找出二叉树中指定节点的下一个节点(中序后继),假定每个节点有父指针。
4.6 找出二叉树中指定节点的下一个节点(中序后继),假定每个节点有父指针。
5 / 2 6 / \ 1 4 7 / 3class Node{ Node left; Node right; Node parent; int val;}/**1.如果有右子树,则结果为右子树的最左节点。2.如果没有右子树,则需要回到父节点,如果当前节点是父节点的左子树,则父节点就是结果,如果不是继续向上再找父节点。*/public TreeNode inorderSucc(TreeNode n){ if(n==null) return null; if(n.right!=null) return leftMost(n.right); TreeNode child = n; TreeNode par =child.parent; while(par!=null&&par.right==child){ child=par; par=par.n; } return par;}private TreeNode leftMost(TreeNode n){ if(n==null) return null; while(n.left!=null) n=n.left; return n;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。