首页 > 代码库 > 判断是否是平衡二叉树
判断是否是平衡二叉树
tag: 二叉树 - 平衡二叉树
package com.zhaochao.tree; /** * Created by zhaochao on 17/1/24. * 平衡二叉树是指: 对于树中的每个节点,其左右孩子的高度差不超过1 * 注意:是每一个节点都平衡才可以。 * * 方法一: 递归法。 用一个DFS深度优先帮助函数求树的高度, 若其中一个节点不平衡,则返回-1,否则返回树的高度 */ public class JudgeAVL { public boolean isAVL(TreeNode root) { if(root == null) { return true; } return getDepth(root) != -1; } public int getDepth(TreeNode root) { if(root == null) { return 0; } int left = getDepth(root.left); int right = getDepth(root.right); if(left == -1 || right == -1 || Math.abs(left - right) > 1) { return -1; } return Math.max(left, right) + 1; } public static void main(String[] args) { TreeNode root = new TreeNode(0); TreeNode node1 = new TreeNode(1); TreeNode node2 = new TreeNode(2); TreeNode node3 = new TreeNode(3); TreeNode node4 = new TreeNode(3); root.left = node1; root.right = node2; node2.left = node3; node3.left = node4; JudgeAVL test = new JudgeAVL(); boolean result = test.isAVL(root); System.out.println("Is balanced tree : "+result); } }
判断是否是平衡二叉树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。