剑指offer-39.平衡二叉树
来源:互联网 发布:js获取android版本号 编辑:程序博客网 时间:2024/05/18 02:03
题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路:首先求出深度,然后进行深度比较,求深度需要求二叉树深度函数,然后再调用深度函数,最后比较深度差。
class Solution {public: //需要一个求二叉树深度的函数进行辅助,因为平衡二叉树的定义 //1.是它是一 棵空树或 //2.它的左右两个子树的高度差的绝对值不超过1, //3.并且左右两个子树都是一棵平衡二叉树。 int tree_depth(TreeNode* t) { if (t == NULL) return 0; int left = tree_depth(t->left); int right = tree_depth(t->right); return (left > right ? left + 1: right + 1); //左子树深度加一或者右子树深度加一,因为还有根节点 } bool IsBalanced_Solution(TreeNode* pRoot) { if (pRoot == NULL) return true; //1.它是一 棵空树 int left_depth = tree_depth(pRoot->left); int right_depth = tree_depth(pRoot->right); int diff = left_depth - right_depth; if (diff > 1 || diff < -1) return false; else //2.3.第二第三次情况,其实我试了一次啊,else直接返回true结果也对,不过感觉不是很严谨, //所以else返回判断左子树和右子树是否也为平衡树(第三种情况),直接返回true只是第二种情况, //也不太很确定自己的想法是否正确,欢迎指正 return (IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right)); }};
0 0
- 剑指offer-39.平衡二叉树
- 剑指offer--平衡二叉树
- 《剑指offer》平衡二叉树
- 剑指Offer--平衡二叉树
- 剑指offer-平衡二叉树
- 剑指offer:平衡二叉树
- 剑指offer 平衡二叉树
- 剑指offer:平衡二叉树
- [剑指offer]平衡二叉树
- 剑指offer|平衡二叉树
- 《剑指offer》-平衡二叉树
- 剑指offer-平衡二叉树
- 剑指offer: 平衡二叉树
- 剑指offer:平衡二叉树
- 剑指offer-平衡二叉树
- 剑指offer 平衡二叉树
- 【剑指offer】平衡二叉树
- 剑指offer-平衡二叉树
- 数据结构――堆的基本概念及其操作
- 关于python将文本文档以列表方式出现,末尾\n的意思。
- SpringMVC
- oracle--过滤和排序
- Digital Studio
- 剑指offer-39.平衡二叉树
- STL之map::find方法的使用小例子
- Hadoop学习笔记3、Hadoop环境搭建及测试
- 《javascript dom编程艺术》学习笔记
- 第七届蓝桥杯大赛个人赛(软件类)决赛真题
- WIfi
- 手把手教你将Android项目开源到JCenter两种方式以及挖坑和填坑(一)
- 【POJ 2348 Euclid's Game】+ 博弈
- 达夫设备--Duff's Device