剑指offer:平衡二叉树

来源:互联网 发布:编程 网页开发 编辑:程序博客网 时间:2024/06/15 22:53

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

递归

【运行时间:15ms  占用内存:8404k】

public class Solution {    public boolean IsBalanced_Solution(TreeNode root) {       if (root==null)return true;       int left_height = height(root.left);       int right_height = height(root.right);       if(Math.abs(left_height - right_height) > 1)            return false;        else            return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);    }    private int height(TreeNode root){        if(root == null)            return 0;        int left_height = height(root.left);        int right_height = height(root.right);        return 1 + (left_height > right_height ? left_height : right_height);    }}

递归2

参考牛客网网友解答
public class Solution {    //后续遍历时,遍历到一个节点,其左右子树已经遍历  依次自底向上判断,每个节点只需要遍历一次         private boolean isBalanced=true;    public boolean IsBalanced_Solution(TreeNode root) {                 getDepth(root);        return isBalanced;    }    public int getDepth(TreeNode root){        if(root==null)            return 0;        int left=getDepth(root.left);        int right=getDepth(root.right);                 if(Math.abs(left-right)>1){            isBalanced=false;        }        return right>left ?right+1:left+1;             }}




原创粉丝点击