平衡二叉树
来源:互联网 发布:jsp网上图书系统源码 编辑:程序博客网 时间:2024/06/05 05:45
/*
问题描述:平衡二叉树,给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。
来源:LintCode
作者:syt
问题描述:平衡二叉树,给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。
来源:LintCode
作者:syt
日期:2017-11-10
思路:计算每个结点的左子树和右子树的深度,并判断是否是平衡二叉树
*/
#include <iostream>class TreeNode{public:int val;TreeNode *left, *right;TreeNode(){}TreeNode(int val, TreeNode *lptr = NULL, TreeNode *rptr = NULL) {this->val = val;this->left = lptr;this->right = rptr;}};
#include "d_tree.h"#include <queue>using namespace std;/** @param root: The root of binary tree.* @return: True if this Binary tree is Balanced, or false.*/int calDepth(TreeNode* root){if (root == NULL)return 0;int left = calDepth(root->left);int right = calDepth(root->right);int max = 0;if (left > right)max = left + 1;elsemax = right + 1;return max;}bool isBalanced(TreeNode * root) {// write your code hereif (root == NULL)return true;queue<TreeNode *> q;TreeNode* p;q.push(root);while (!q.empty()){p = q.front();q.pop();int left = calDepth(p->left);int right = calDepth(p->right);int res = left - right;if (res > 1 || res < -1)return false;if (p->left != NULL)q.push(p->left);if (p->right != NULL)q.push(p->right);}return true;}TreeNode *buildTree(){TreeNode *root, *b, *c, *d, *e, *f, *g, *h;h = new TreeNode(8);g = new TreeNode(7);f = new TreeNode(6);e = new TreeNode(5);d = new TreeNode(4, g, h);c = new TreeNode(3, e, f);b = new TreeNode(2, d, (TreeNode *)NULL);root = new TreeNode(1, b, c);return root;}void main(){TreeNode *root = buildTree();cout << isBalanced(root) << endl;}
阅读全文
0 0
- 平衡二叉树平衡法则
- 二叉树--二叉平衡树
- 平衡二叉树的
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉查找树
- 平衡二叉树 详解
- 平衡二叉树
- 平衡二叉树
- AVL 平衡二叉树
- 平衡二叉树
- 平衡二叉树-红黑树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 平衡二叉树
- 如何正确判断 Android应用是第一次启动的靠谱方案(短篇)
- C语言的函数定义和函数声明
- java调用OutputStream接口中flush方法,真的会立即刷新吗?
- codeforce 884C
- ROS中几种常用的msg
- 平衡二叉树
- 使用nginx搭建集群tomcat8,redis实现session共享,文件共享问题
- linux常用命令
- VS2017安装ImageWatch
- Memcached入门学习四(spring 集成MemCached)
- Android判断手机是否安装微信(总结)
- 真正从零开始,TensorFlow详细安装入门图文教程!
- 大数加法
- 模拟电路学习总结