一:题目
二:上码
/*** 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 {/**思路:1.这里是求高度的话 那么的话我们要用的是后序遍历 从下往上2.递归1>:确定递归函数的参数和返回类型参数是我们的root返回类型是 int 我们每次要返回的是 我们求取子树的高度同时注意如果两个高度差大于1的话 那么我们就返回-1,2>:确定终止条件遍历到根节点3>:确定递归体(只考虑一层)求出子结点的高度,如果等于-1;那就返回-1;然后求出差值(如果大于1那就返回-1);返回根节点的最大高度(比较左右子树最大高度)*/public boolean isBalanced(TreeNode root) {int ans = getAns(root); return ans == -1?false : true;}//只考虑一层public int getAns (TreeNode root) {if (root == null) return 0;//遍历到空节点 返回值肯定为0int left_len = getAns(root.left);//求子结点的高度if (left_len == -1) return -1;int right_len = getAns(root.right);if (right_len == -1) return -1;if(Math.abs(left_len - right_len) > 1) {return -1;}return Math.max(left_len+1,right_len+1);//返回根节点的高度}}