您的位置:首页 > 其它

Balanced Binary Tree(leetcode)

2014-11-07 15:45 253 查看
题目:

Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

Show Tags

题目来源:https://oj.leetcode.com/problems/balanced-binary-tree/

解题思路:判断每个节点的孩子节点,如果深度差比1大,则不是平衡二叉树。定义没有孩子的节点的深度为0。然后用后序遍历,先遍历孩子再遍历父亲的办法来不断判断。

#include<iostream>
using namespace std;

struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

bool postorderTraverse(TreeNode *root)
{
if(root==NULL)
return true;
if(postorderTraverse(root->left)==false)
return false;
if(postorderTraverse(root->right)==false)
return false;
int leftValue=(root->left==NULL)?-1:root->left->val;
int rightValue=(root->right==NULL)?-1:root->right->val;
if(abs(leftValue-rightValue)>1)
return false;
else
root->val=max(leftValue,rightValue)+1;
return true;
}

bool isBalanced(TreeNode *root)
{
return postorderTraverse(root);
}
int main()
{
TreeNode *root=new TreeNode(1);
root->left=new TreeNode(2);
root->right=new TreeNode(3);
cout<<isBalanced(root)<<endl;

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: