博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指Offer——平衡二叉树
阅读量:4632 次
发布时间:2019-06-09

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

题目描述:

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

分析:

 平衡二叉树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树,同时,平衡二叉树必定是二叉搜索树,反之则不一定。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。

根据定义两个子树的高度差的绝对值不超过1,那么可以通过递归求出左右子树的高度,计算它们的高度差,如果有高度差超过1,那么该树就不是平衡二叉树。

代码:

1 class Solution { 2 public: 3     int isBalanced = true; 4     bool IsBalanced_Solution(TreeNode* pRoot) { 5         TreeDepth(pRoot); 6         return isBalanced; 7     } 8  9     int TreeDepth(TreeNode* pRoot) {10         if(pRoot == NULL) return 0;11         int leftTreeDepth = TreeDepth(pRoot->left);12         int rightTreeDepth = TreeDepth(pRoot->right);13         if(abs(leftTreeDepth - rightTreeDepth) > 1)14             isBalanced = false;15         return max(leftTreeDepth + 1, rightTreeDepth + 1);16     }17 };

 

转载于:https://www.cnblogs.com/jacen789/p/7747694.html

你可能感兴趣的文章
Django 分页
查看>>
layuiAdmin 项目修改
查看>>
创新点子:博客图文混编工具
查看>>
NSUserDefault、NSMutableDictionary的setValue和setObject区别
查看>>
TreeSet&第三方比较器&Map
查看>>
经典算法mark
查看>>
http://channel9.msdn.com/Events/MIX
查看>>
静态页面:html5个人博客模板《绅士》
查看>>
mvc 基础概念
查看>>
mysql数据恢复
查看>>
kali 插耳机没声音
查看>>
Codeforces Round #294 (Div. 2) D. A and B and Interesting Substrings
查看>>
如何巧妙使用ZBrush中的Image Plane插件
查看>>
windows安装theano和keras
查看>>
141. Linked List Cycle
查看>>
169. Majority Element
查看>>
51NOD 1087 1 10 100 1000
查看>>
谈谈javascript语法里一些难点问题(一)
查看>>
jQuery 遍历同胞(siblings)
查看>>
小萌库一周电影大合集
查看>>