剑指offer 39.判断二叉树是否为平衡二叉树
来源:互联网 发布:维棠flv优化破解版 编辑:程序博客网 时间:2024/06/08 17:47
题目
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路:如果直接使用递归遍历,会重复遍历之前的节点,更好的方法是采用后序遍历,对每个节点来说,我们都已经遍历了它的左右子树,所以边遍历边判断,最后遍历到树的根节点时,判断完毕。
递归遍历:
class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) {if(pRoot==NULL) return true; int left=IsBalanced_Solution(pRoot->left); int right=IsBalanced_Solution(pRoot->right); int diff=left-right; if(diff>1||diff<-1) return false; return IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right); }};
后序遍历:
class Solution {public: bool IsBalanced(TreeNode* pRoot,int* pDepth){ if(pRoot==NULL){ *pDepth=0; return true; } int left,right; if(IsBalanced(pRoot->left,&left)&&IsBalanced(pRoot->right,&right)){ int diff=left-right; if(diff>=-1&&diff<=1){ *pDepth=(left>right)?(left+1):(right+1); return true; } } return false; } bool IsBalanced_Solution(TreeNode* pRoot) {int Depth=0; return IsBalanced(pRoot,&Depth); }};
0 0
- 《剑指offer》:[39-1]判断是否为平衡二叉树
- 剑指offer 39.判断二叉树是否为平衡二叉树
- 剑指offer 39. 二叉树的深度和判断是否为平衡二叉树
- 剑指offer 39-二叉树的深度 判断二叉树是否为平衡二叉树
- 剑指offer(41):判断二叉树是否为平衡二叉树(AVL树)
- 剑指offer 面试题39 求二叉树深度|判断是否为平衡二叉树
- 剑指offer—关于判断二叉树是否为平衡二叉树
- 【剑指offer系列之二叉树】判断是否为平衡二叉树
- 【二叉树】判断二叉树是否为平衡二叉树
- 剑指offer系列源码-判断是否是平衡二叉树
- 剑指offer:判断是否是平衡二叉树
- 【剑指offer】判断二叉树是否平衡(左右子树高度差最多为1)
- 剑指Offer----面试题39(2):判断是否为平衡二叉树
- 剑指Offer系列-面试题39-2:判断一棵树是否为平衡二叉树
- 判断二叉树是否为平衡树
- 判断树是否为平衡二叉树
- 判断二叉树是否为平衡树
- 判断树是否为平衡二叉树
- jsPlumb系列问题:请问jsPlumb渲染出来之后线条没有连接节点?需要拖动之后才连上
- JAVA反射使用手记
- 【SysML】模型图概览
- 【Harmony】概述
- EasyUI扩展方法 + jutil.js
- 剑指offer 39.判断二叉树是否为平衡二叉树
- Js 点击按钮 选择文件后 自动上传文件
- 【需求工程】KANO模型
- 【DOORS】产品功能介绍
- EasyUI项目中的自定义JS
- mysql 跨数据库 查询,更新 federated引擎使用记录
- NOIP 2006 普及组 复赛 happy 开心的金明
- 【DOORS】如何基于DOORS实施需求管理
- Spring中BeanPostProcessor