博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 110. 平衡二叉树 dfs
阅读量:3903 次
发布时间:2019-05-23

本文共 1605 字,大约阅读时间需要 5 分钟。

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

示例 1:

给定二叉树 [3,9,20,null,null,15,7]

3   / \  9  20    /  \   15   7

返回 true

示例 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

1      / \     2   2    / \   3   3  / \ 4   4

返回 false

先求出节点左右子树的高度,然后判定是否为平衡树,如果是再递归左子树和右子树,不是,则直接返回。。

Java:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public boolean isBalanced(TreeNode root) {        if(root==null)            return true;        int left=Height(root.left);        int right=Height(root.right);        if(Math.abs(left-right)>1)            return false;        else             return isBalanced(root.left)&&isBalanced(root.right);    }    private int Height (TreeNode root)    {        if(root==null)            return 0;        return Math.max(Height(root.left),Height(root.right))+1;    }}

C++:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool isBalanced(TreeNode* root) {        if(root==NULL)            return true;        int left=Height(root->left);        int right=Height(root->right);        if(abs(left-right)>1)            return false;        else             return isBalanced(root->left)&&isBalanced(root->right);    }    int Height (TreeNode* root)    {        if(root==NULL)            return 0;        return max(Height(root->left),Height(root->right))+1;    }};

 

 

转载地址:http://vvaen.baihongyu.com/

你可能感兴趣的文章
300. 最长上升子序列
查看>>
445. 两数相加 II
查看>>
449. 序列化和反序列化二叉搜索树
查看>>
450. 删除二叉搜索树中的节点
查看>>
451. 根据字符出现频率排序
查看>>
454. 四数相加 II
查看>>
467. 环绕字符串中唯一的子字符串
查看>>
468. 验证IP地址
查看>>
474. 一和零
查看>>
486. 预测赢家
查看>>
494. 目标和
查看>>
520. 检测大写字母
查看>>
数据处理和训练模型的技巧
查看>>
vb 中如何做同步 异步?
查看>>
geturl
查看>>
关于sizeof
查看>>
windows 核心编程笔记.070301
查看>>
WINDOWS核心编程笔记 070303
查看>>
终于解决了交叉表左上角,每页都显示的问题.
查看>>
windows核心编程 070309
查看>>