题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路:看到这道题思路是有的,构造一个函数,输入一个节点,通过左右孩子节点返回的深度,判断左右孩子的深度是否满足相差不超过一,并且左右孩子都是平衡二叉树,则把左右孩子较深的那个加一返回。
可是并不太明白如和返回两个返回值。 后来看了解析才明白,其中一个是返回值的形式传递的,就是树的深度,然后设置一个全局变量,在这个递归函数中间对他进行设置,只要有一层不满足就设置为false,返回这个全局变量就可以了
public class Solution { boolean istrue=true; public boolean IsBalanced_Solution(TreeNode root) { getdepth(root); return istrue; } public int getdepth(TreeNode root){ if(root==null){ return 0; } int leftdepth=getdepth(root.left); int rightdepth=getdepth(root.right); if(Math.abs(leftdepth-rightdepth)>1){ istrue=false; } return (leftdepth>rightdepth?leftdepth:rightdepth)+1; } }