Q4.1 Implement a function to check if a tree is balanced
来源:互联网 发布:win7系统更新失败知乎 编辑:程序博客网 时间:2024/05/19 19:35
Q: Implement a function to check if a tree is balanced. For the purposes of this question, a balanced tree is defined to be a tree such that no two leaf nodes differ in distance from the root by more than one.
A: DFS.
当前节点为node,计算其左子树的高度left,和右子树的高度right, 如果abs(left-right) > 1,则不是平衡二叉树。
为了节省时间,因为会有子问题重复计算的情况,如果子树不是平衡二叉树,则将其高度置为1
#include <iostream>#include <cmath>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};void insert(TreeNode* root, int x){ if(root == NULL){ root = new TreeNode(x); return;} if(x < root->val) insert(root->left, x); else insert(root->right, x);}bool isBalance(TreeNode *root) {if (!root) {return true;}return isBalance(root) > -1;}int isBalanced(TreeNode *root) {if (!root) {return 0;}int left = isBalanced(root->left);int right = isBalanced(root->right);if (left < 0 || right < 0 || abs(left-right) > 1) {return -1;}return max(left, right) +1;}int main() {int a[10] = {5,1,2,3,4,6,7,8,9,0};TreeNode *root = NULL;for (int i = 0; i < 10; i++) {insert(root, a[i]);}cout<<isBalance(root)<<endl;}
0 0
- Q4.1 Implement a function to check if a tree is balanced
- 2.7 Implement a function to check if a linked list is a palindrome
- Q4.5 Check if a binary search is BST
- check a tree is balanced or not
- LeetCode题目笔记(四) -- Check if a binary tree is balanced
- A program to check if a binary tree is BST or not
- Check if a given Binary Tree is SumTree
- Q4.8 To decide if T2 is a subtree of T1
- Q4.3 Convert a sorted array to a binary tree
- What is the best way to implement a heartbeat in C++ to check for socket connectivity?
- Ch4-1: identify if a tree is "balanced" (注:CTCI 第四版和第五版的定义不一样)
- Check if a binary tree is subtree of another binary tree
- Check if tree b is part of tree a JAVA 实现
- Check if a string value is numeric
- Check if a linked list is palindrome
- How To: Check if a user is part of a SharePoint group in InfoPath
- Is there a way to check if android WindowManager already contains a view?
- Given two binary trees, write a function to check if they are equal or not.
- 百度吴恩达:图像和音视频搜索是人工智能新方向
- 【BZOJ】【P2073】【POI2004】【PRZ】【题解】【状压DP+枚举子集】
- 遗传算法简介
- Deep Learning(深度学习) 学习笔记(二)
- php yii框架web项目连接数据库以及crud操作
- Q4.1 Implement a function to check if a tree is balanced
- Deep Learning(深度学习) 学习笔记(三)
- Mysql 远程访问SQLSTATE[28000][1045] Access denied for user 'root'@'localhost'
- matlab生成随机矩阵
- Junit4.x扩展:运行指定方法
- Unity引擎模拟实现HTML5 animation 动画效果,取代NGUI的Tweener缓动
- MINA框架详解
- UIWebView与Javascript交互
- 【Android入门 二】Activity的理解