5.1.10—二叉树的遍历—Balanced Binary Tree

来源:互联网 发布:开淘宝网店详细步骤 编辑:程序博客网 时间:2024/06/15 05:10
描述
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.

#include "BinaryTree.h"#include <stack>#include<queue>#include<vector>#include<algorithm>#include<cmath>using namespace std;//===判断一棵二叉树是否是平衡树----递归版本int HeightTree(BinaryTreeNode *proot){if (!proot) return 0;elsereturn HeightTree(proot->m_pLeft) > HeightTree(proot->m_pRight) ? 1 + HeightTree(proot->m_pLeft) : HeightTree(proot->m_pRight) + 1;}bool IsBalancedTree(BinaryTreeNode *proot){if (!proot)return true;int left = HeightTree(proot->m_pLeft);int right = HeightTree(proot->m_pRight);if (abs(left - right) > 1)return false;return IsBalancedTree(proot->m_pLeft)&&IsBalancedTree(proot->m_pRight);}// ====================测试代码====================//            8//        6      10//       5 7    9  11int main(){//===BinaryTreeNode* pNode8 = CreateBinaryTreeNode(8);BinaryTreeNode* pNode6 = CreateBinaryTreeNode(6);BinaryTreeNode* pNode10 = CreateBinaryTreeNode(10);BinaryTreeNode* pNode5 = CreateBinaryTreeNode(5);BinaryTreeNode* pNode7 = CreateBinaryTreeNode(7);BinaryTreeNode* pNode9 = CreateBinaryTreeNode(9);BinaryTreeNode* pNode11 = CreateBinaryTreeNode(11);ConnectTreeNodes(pNode8, pNode6,pNode10);ConnectTreeNodes(pNode6, pNode5, pNode7);ConnectTreeNodes(pNode10, pNode9, pNode11);//===//PrintTree(pNode8);//===bool flag = IsBalancedTree(pNode8);cout << flag << endl;DestroyTree(pNode8);}

阅读全文
0 0
原创粉丝点击