leetcode 110. Balanced Binary Tree(平衡二叉树的判断) DFS深度优先遍历
来源:互联网 发布:千里眼偷窥软件 编辑:程序博客网 时间:2024/06/05 02:04
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 of every node never differ by more than 1.
本题考查的是平衡二叉树的判断,平衡二叉树是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,那么直接递归判断即可。
1) 递归判断二叉树是否是平衡二叉树
2) 递归找二叉树高度,求高度也是用递归
代码如下:
/*class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}*/ /* * 平衡二叉树:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1 * 1.递归判断二叉树是否是平衡二叉树 * 2.递归找二叉树高度,求高度也是用递归 * 递归停止条件: * 递归到叶子节点时终止,root==null时,返回0。 */public class Solution{ public boolean isBalanced(TreeNode root) { if(root ==null) return true; int heightLeft=getHeight(root.left); int heightRight=getHeight(root.right); if(Math.abs(heightLeft-heightRight)<=1) return isBalanced(root.left) && isBalanced(root.right); else return false; } int getHeight(TreeNode root) { if(root==null) return 0; else { int heightLeft=getHeight(root.left)+1; int heightRight=getHeight(root.right)+1; return Math.max(heightLeft, heightRight); } }}
下面是C++的做法,就是一个简单的DFS深度优先遍历的应用
代码如下:
#include <iostream>#include <vector>#include <queue>#include <algorithm>using namespace std;/*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; else { int left = getHeight(root->left) + 1; int right = getHeight(root->right) + 1; if (abs(left - right) <= 1) return isBalanced(root->left) && isBalanced(root->right); else return false; } } int getHeight(TreeNode* root) { if (root == NULL) return 0; else { int left = getHeight(root->left) + 1; int right = getHeight(root->right) + 1; return max(left, right); } }};
阅读全文
0 0
- leetcode 110. Balanced Binary Tree(平衡二叉树的判断) DFS深度优先遍历
- leetcode 110. Balanced Binary Tree-平衡二叉树|深度遍历
- LeetCode:Balanced Binary Tree(平衡二叉树的判断)
- 110. Balanced Binary Tree (平衡二叉树判断)
- LeetCode 110. Balanced Binary Tree(平衡二叉树)
- LeetCode OJ 之 Balanced Binary Tree (平衡二叉树的判断)
- 二叉树的深度&判断一棵二叉树是否是平衡二叉树&110. Balanced Binary Tree
- Balanced Binary Tree 判断是否平衡二叉树 @LeetCode
- LeetCode-Balanced Binary Tree && 二叉树的深度 && 二叉树的平衡
- 【LeetCode】Balanced Binary Tree,平衡二叉树
- [LeetCode] Balanced Binary Tree 平衡二叉树
- Leetcode Balanced Binary Tree 平衡二叉树
- Balanced Binary Tree 平衡二叉树的判断
- 110. Balanced Binary Tree | 判断是否是平衡二叉树
- Balanced Binary Tree --判断平衡二叉树(重重)
- leetcode 669. Trim a Binary Search Tree 修建二叉搜索树BST + 深度优先遍历DFS
- 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解
- Leetcode 110. Balanced Binary Tree 平衡二叉树 解题报告
- hdu 6201 树形DP
- 八大排序算法
- jwt json token 和 跨域访问
- 2电梯一起坏
- 获取IE HTML文档
- leetcode 110. Balanced Binary Tree(平衡二叉树的判断) DFS深度优先遍历
- css渐变之linear-gradient
- 求斐波那契数列的第n项
- netbeans-xdebug 断点调试php
- 【传智播客郑州校区分享】Tomcat中虚拟路径,虚拟主机详解
- java 中几种常用数据结构
- 【数据平台】Eclipse+Scala远程开发调试关于hostname的问题
- hdu5914 Triangle 【贪心】
- Yii::app()介绍