LeetCode刷题笔录Balanced Binary Tree
来源:互联网 发布:网络教育介绍 编辑:程序博客网 时间:2024/05/29 19:00
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.
先写了个naive的递归算法。一个helper function递归计算节点的高度。在主函数里递归地计算每个节点左子树和右子树的高度差。
public class Solution { public boolean isBalanced(TreeNode root) { if(root == null) return true; if(Math.abs(treeHeight(root.left) - treeHeight(root.right)) > 1) return false; return isBalanced(root.left) && isBalanced(root.right); } public int treeHeight(TreeNode node){ if(node == null) return 0; return 1 + Math.max(treeHeight(node.left), treeHeight(node.right)); }}
这个居然没超时。
网上找到一个更好一点的,减少了递归的次数吧。
/** * 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) { return height(root) != -1; } private int height(TreeNode root) { if(root == null) return 0; int leftHeight = height(root.left); if(leftHeight == -1) return -1; int rightHeight = height(root.right); if(rightHeight == -1) return -1; if(Math.abs(leftHeight - rightHeight) > 1) return -1; return 1 + Math.max(leftHeight, rightHeight); }}
0 0
- LeetCode刷题笔录Balanced Binary Tree
- LeetCode刷题笔录Convert Sorted Array to Balanced Binary Search Tree
- [leetcode刷题系列]Balanced Binary Tree
- LeetCode刷题笔录 Validate Binary Search Tree
- LeetCode刷题笔录 Binary Tree Level Order Traversal
- LeetCode刷题笔录 Binary Tree Zigzag Level Order Traversal
- LeetCode刷题笔录 Maximum Depth of Binary Tree
- LeetCode刷题笔录 Binary Tree Preorder Traversal
- LeetCode刷题笔录 Binary Tree Inorder Traversal
- LeetCode刷题笔录Binary Tree Level Order Traversal II
- LeetCode刷题笔录Minimum Depth of Binary Tree
- LeetCode刷题笔录Flatten Binary Tree to Linked List
- LeetCode刷题笔录Binary Tree Post Order Traversal
- LeetCode刷题笔录Recover Binary Search Tree
- LeetCode刷题笔录Recover Binary Search Tree
- LeetCode刷题笔录Binary Tree Maximum Path Sum
- LeetCode: Balanced Binary Tree
- [LeetCode]Balanced Binary Tree
- web开发知识点
- OpenCV2.3.1在Win7+VS2010下的配置过程
- C++知识点总结
- 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法
- mini2440裸机试炼之--myled
- LeetCode刷题笔录Balanced Binary Tree
- grunt命令
- mini2440裸机试炼之--按键控制蜂鸣器和LED
- NSTimer实现动画
- iOS动画浅析
- Reading files in JavaScript using the File APIs
- Tomcat应用绑定域名以及Apache端口转发
- 学习JavaScript的最佳方法
- 用JavaScript读取和保存文件