lintcode-2つの数の和-BSTバージョン

1606 ワード

テーマ:一本の二叉に木と一つの整数を検索します.  n、木の中で見つけられます.  n の2つの数字
サンプル:
一本のBSTをあげる:
    4
   / \
  2   5
 / \
1   3
および整数n=  3戻る  [1, 2] または  [2, 1]
考え方:ノードを巡回して、ノードの上で別の数が存在するかどうかを判断します.
コード:
/** * Definition of TreeNode: * public class TreeNode{ *     public int val *     public TreeNode left、right; *     public TreeNode(int val){ *         this.val=val *         this.left=this.right=null; *     } * } */public class Solution{   /*     * @param:the root of tree     * @パラム:the target sum     * @return:two numbers from tree which sum is n     */    public int[]twoSum(TreeNode root,int n){       //write your code here        if(root==null)        return null        int[]sum=new int[2];        toSum(root,root,n,sum)        return sum;    }    public void toSum(TreeNode root,TreeNode t,int n,int[]array){        if(t==null)        return;        if(isExist(root,n-t.val){            array[0]=t.val;            array[1]=n-t.val            return;        }else{            toSum(root,t.left,n,array)            toSum(root,t.right,n,array);        }            }        public book is Exist(TreeNode root,int n){        if(root==null)        return false;        if(root.val