二叉树

练习:求根到叶子节点数字之和
给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。
每条从根节点到叶节点的路径都代表一个数字:

例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。
计算从根节点到叶节点生成的 所有数字之和 。

叶节点 是指没有子节点的节点。

 

 

class Solution {
    static int sum;
    public int sumNumbers(TreeNode root){
        sum=0;
      sumNumbers1(0,root);
       return sum;
    }
    public static void sumNumbers1(int val,TreeNode root) {
        
        if(root==null)
            return ;
        int k=(val*10+root.val);
        if(root.left==null&&root.right==null){
              sum=sum+k;
        }
       
        sumNumbers1(k,root.left);
         sumNumbers1(k,root.right);
        
    }
}

  妈耶,破防了

练习:二叉树的最近公共祖先

 

练习:从前序与中序遍历序列构造二叉树

 

class Solution {
    public TreeNode buildTree(int[] preorder, int[] inorder) {
        if(preorder.length==0&&inorder.length==0){
            return null;
        }
        TreeNode root=new TreeNode(preorder[0]);
        for(int i=0;i<inorder.length;i++){
            if(preorder[0]==inorder[i]){
                root.left=buildTree(Arrays.copyOfRange(preorder,1,i+1),Arrays.copyOfRange(inorder,0,i));
               root.right=buildTree(Arrays.copyOfRange(preorder,i+1,preorder.length),Arrays.copyOfRange(inorder,i+1,inorder.length));
                break;
            }
            
        }
      

 


 

练习:从中序与后序遍历序列构造二叉

 

class Solution {
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        if(inorder.length==0&&postorder.length==0){
            return null;
        }
        TreeNode root=new TreeNode(postorder[postorder.length-1]);
        for(int i=0;i<inorder.length;i++){
            if(inorder[i]==postorder[postorder.length-1]){
               root.left=buildTree(Arrays.copyOfRange(inorder,0,i+1),Arrays.copyOfRange(postorder,postorder.length-i-1,postorder.length));
               root.right=buildTree(Arrays.copyOfRange(inorder,i+2,inorder.length),Arrays.copyOfRange(postorder,0,postorder.length-1));
               break;
            }
           
        }
return root;
    }
}
超时了,优化开始了。
超出时间限制.....
不知道怎么优化了,,,,查了一下,好像是用栈或者hash,下次填坑。

练习:前序遍历构造二叉搜索树

 

posted @ 2021-11-03 22:04  橘子味汽水  阅读(41)  评论(0编辑  收藏  举报