本文共 1335 字,大约阅读时间需要 4 分钟。
题目:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */class Solution { // 封装一个返回类 public static class ReturnData{ private boolean isB ; private int h; public ReturnData(boolean isB,int h){ this.isB = isB; this.h = h; } } // 迭代判断 public static ReturnData process(TreeNode root){ if(root==null){ return new ReturnData(true,0); } ReturnData leftData = process(root.left); if(!leftData.isB){ return new ReturnData(false,0); } ReturnData rightData = process(root.right); if(!rightData.isB){ return new ReturnData(false,0); } if(Math.abs(rightData.h-leftData.h)>1){ return new ReturnData(false,0); } return new ReturnData(true,Math.max(rightData.h,leftData.h)+1); } public boolean isBalanced(TreeNode root) { return process(root).isB; }}
转载地址:http://xzwdf.baihongyu.com/