【算法】平衡二叉树
【算法】平衡二叉树
1.题目

2.推荐解法
-
代码
import java.util.*; import java.lang.Math; /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ /** * @title 平衡二叉树 * @description 使用自底向上递归的思想: * 计算当前节点子树的高度,左右子树继续递归计算。 * 在递归过程中发现有子树不符合平衡条件,直接返回-1。 * @author musecho801 * @date 2021/3/13 13:30 */ public class Solution { public boolean IsBalanced_Solution(TreeNode root) { return subTreeHeight(root)!=-1; } //计算子树高度 //返回-1说明不平衡 public int subTreeHeight(TreeNode root){ if(root==null) return 0; int left=subTreeHeight(root.left); //左子树不平衡,提前结束 if(left==-1) return -1; int right=subTreeHeight(root.right); //右子树不平衡,提前结束 if(right==-1) return -1; //本子树不平衡 if(!(Math.abs(left-right)<=1)) return -1; //本子树平衡,返回包含当前根节点的子树高度 return 1+(left>right?left:right); } }

浙公网安备 33010602011771号