[pg]next pointer in bst

2017-02-19  本文已影响0人  秋_轩
import java.util.HashSet;
import java.util.Set;

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    class TreeNode{
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode parent;
    }
    public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
        return helper(root,p.val,new HashSet<TreeNode>());

    }
    public TreeNode helper(TreeNode root, int val, Set<TreeNode> set){
        if(root == null)return null;
        set.add(root);
        TreeNode res = null;
        if(root.val <= val){
            if(root.right != null && !set.contains(root.right)){
                res = helper(root.right,val,set);
                
            }
            if(res != null)return res;
            return helper(root.parent,val,set);
            
        } else {
            return root;
        }
    }

   

    
}
import java.util.HashSet;
import java.util.Set;

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    class TreeNode{

        TreeNode left;
        TreeNode right;
        TreeNode parent;
    }
    public TreeNode inorderSuccessor(TreeNode p) {
        if(p.right != null)return p.right;
        
        while(p.parent != null){
            if(p.parent.right == p)p = p.parent;
            else return p.parent;
        }
        
        return null;

    }
    




}
上一篇 下一篇

猜你喜欢

热点阅读