标签:
/* * 285. Inorder Successor in BST * 2016-6-27 By Mingyang * 网上有些代码太复杂,我的最简单明了,无非就是一个dfs,用stack来做就好了,遇到p以后 * 用一个flag mark一下,接下来的话就可以下一个inorder的时候return就好了 * 注意:判断的是!stack.empty()而不是另外一种的方法 */ public TreeNode inorderSuccessor(TreeNode root, TreeNode p) { if(root==null) return null; Stack<TreeNode> stack=new Stack<TreeNode>(); TreeNode s=root; boolean findOrNot=false; while(!stack.empty()||s!=null){ if(s!=null){ stack.push(s); s=s.left; }else{ TreeNode temp=stack.pop(); if(findOrNot){ return temp; }else{ if(temp==p) findOrNot=true; } s=temp.right; } } return null; }
标签:
原文地址:http://www.cnblogs.com/zmyvszk/p/5622958.html