判断一颗二叉树是否为平衡二叉树
来源:互联网 发布:电视盒子无法安软件 编辑:程序博客网 时间:2024/06/06 07:24
问题:给定一颗二叉树,判定其是否为平衡二叉树。
二叉树的结构为:
//Definition for binary treepublic class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}
方法一:首先可以求出每一个节点的高度(采用递归的方法),然后再判断每一个节点是否符合平衡的条件(即| leftHeight-rightHeight | <= 1)(采用递归的方法)。此方法的时间复杂度应该是O(n^2)
public class Solution { public boolean isBalanced(TreeNode root) { if(root == null) return true; if(Math.abs(getHeight(root.left)-getHeight(root.right)) <=1 && isBalanced(root.left) && isBalanced(root.right)) return true; else return false; } public int getHeight(TreeNode root){ if(root == null) return 0; return Math.max(getHeight(root.left),getHeight(root.right)) + 1; }}
方法二:此方法只使用一次递归,在遍历树的同时也做树是否平衡的判断。此方法的时间复杂度应该是O(n)
public class Solution { public boolean isBalance = true; public boolean isBalanced(TreeNode root){ maxDepth(root); return isBalance; } public int maxDepth(TreeNode root){ if(root == null) return 0; int leftH = maxDepth(root.left); int rightH = maxDepth(root.right); if(Math.abs(leftH - rightH) > 1) isBalance = false; return Math.max(leftH,rightH) + 1; }}
0 0
- 判断一颗二叉树是否为平衡二叉树
- 判断一颗二叉树是否为平衡二叉树
- 判断一棵二叉树是否为平衡二叉树
- 判断一颗二叉树是否为平衡树
- 判断是否为一颗平衡二叉树
- java数据结构-二叉树-判断一颗二叉树是否为平衡二叉树
- 判断一颗二叉树是否平衡
- 判断一颗二叉树是否是平衡二叉树
- 【二叉树】判断二叉树是否为平衡二叉树
- 判断一颗二叉树是否为平衡二叉树(AVL)
- 判断二叉树是否为平衡树
- 判断树是否为平衡二叉树
- 判断二叉树是否为平衡树
- 判断树是否为平衡二叉树
- 判断二叉树是否为平衡树
- 判断树是否为平衡二叉树
- 判断一棵树是否为平衡二叉树
- 判断是否为平衡二叉树
- brief note on Makefile
- 记一次谈判实践
- 环形链表相关题目解析
- Fragment生命周期
- 用CornerStone配置SVN,HTTP及svn简单使用说明
- 判断一颗二叉树是否为平衡二叉树
- clearcase 常用命令参考
- Win7下使用VS2013编写的ActvieX在XP下注册提示:LoadLibrary("XXX.dll")失败-找不到指定的程序
- CheckBoxGroup
- RSA算法原理及其Openssl库函数
- Android 从资源文件中解析Excel
- 傅里叶分析之掐死教程(完整版)
- Objective-C基础学习笔记(三)-面向对象的三大特性之封装
- mysql 自定义函数