LeetCode:maxi&mum depth of binary tree&balanced-binary-tree

来源:互联网 发布:什么是js模块化 编辑:程序博客网 时间:2024/05/17 22:38
class TreeNode{public  int val=1;TreeNode left;TreeNode right;TreeNode(int x){this.val=x;}}public class Solution {//public int ldepth=1,rdepth=1;public int depth;public int maxDepth(TreeNode root){                if(root==null)                return 0;root.val=1;if(root.left!=null){root.val=maxDepth(root.left)+1;}if(root.right!=null){int s=maxDepth(root.right);if(s+1>root.val){root.val=s+1;}}return root.val;}}

minmum depth

/**求最小深度 * Created by a819 on 2017/8/2. */class TreeNode{    public int val;    public TreeNode left;    public TreeNode right;    TreeNode(int x){        this.val=x;    }}public class Solution {    public int run(TreeNode root){        if(root==null)            return 0;         root.val=1;        if (root.left==null&&root.right==null)//如果只有一个节点,深度是一            return 1;        //否则深度是孩子最短深度加一        else{        if(root.left!=null)            root.val=run(root.left)+1;        if(root.right!=null){            int s=run(root.right)+1;            if(root.left==null)//左边节点可能为空,拿着时候他的深度位又孩子加一                root.val=s;            else if(root.val>s)                root.val=s;        }            return root.val;  }    }}

3.Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees ofevery node never differ by more than 1.

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public boolean isBalanced(TreeNode root) {        int leftDep=0;        int rightDep=0;//定义左右节点的深度        if (root==null)            return true;//节点为空认为平衡        if (root.left!=null)            leftDep=height(root.left);        if (root.right!=null)            rightDep=height(root.right);        if (Math.abs(leftDep-rightDep)<=1)            return isBalanced(root.left)&&isBalanced(root.right);        else return false;    }    /**     * 求左右孩子的最大高度也就是深度     * @param node     * @return     */    public int height(TreeNode node){        int s=0;        node.val=1;        if (node.left!=null)            node.val=height(node.left)+1;        if (node.right!=null) {            s = height(node.right) + 1;        if(s>node.val)            node.val=s;        }        return node.val;    }}