博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
刷题笔记(21)--平衡二叉树
阅读量:3960 次
发布时间:2019-05-24

本文共 732 字,大约阅读时间需要 2 分钟。

平衡二叉树

在这里插入图片描述

技巧:递归返回值可以表示两种状态。

class Solution {
// 递归辅助函数,其返回值有两种,如果树平衡返回的是树的深度(左右子树取最大值);如果不平衡,返回 -1; private int depthTree(TreeNode root){
if(root == null) return 0; int ld = depthTree(root.left); int rd = depthTree(root.right); // 左右子树高度差大于1不平衡,且遇到子树不平衡,整个树也不平衡。 if(ld == -1 || rd == -1 || Math.abs(ld - rd) > 1){
return -1; } // 返回数的深度 左右子树取最大值,再加上其本身 return Math.max(ld,rd) + 1; } public boolean isBalanced(TreeNode root) {
return depthTree(root) == -1 ? false : true; }}

补充:递归计算二叉树高度

// 递归函数返回树的深度private int depthTree(TreeNode root){
return root == null ? 0 : Math.max(depthTree(root.left) , depthTree(root.right)) + 1;}

转载地址:http://vpozi.baihongyu.com/

你可能感兴趣的文章