5.1.10—二叉树的遍历—Balanced Binary Tree
2017-08-07 21:33
162 查看
描述
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.
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; else return 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 11 int 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); }
相关文章推荐
- 【LeetCode 110_二叉树_遍历】Balanced Binary Tree
- 【遍历二叉树】10判断二叉树是否平衡【Balanced Binary Tree】
- Binary Tree Zigzag Level Order Traversal (LeetCode) 层序遍历二叉树
- LeetCode 145: Binary Tree Postorder Traversal(二叉树的后序遍历,迭代法)
- [leetcode-二叉树层次遍历并统计每层节点数]--102. Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal, 二叉树层级遍历
- 【遍历二叉树】06二叉树曲折(Z字形)层次遍历II【Binary Tree Zigzag Level Order Traversal】
- 二叉树 遍历 hdu-1710-Binary Tree Traversals
- [LeetCode] Construct Binary Tree from Inorder and Postorder Traversal 由中序和后序遍历建立二叉树
- Leetcode 103 ,Binary Tree Zigzag Level Order Traversal(二叉树Z形分层遍历)
- LeetCode 145 Binary Tree Postorder Traversal(二叉树的后续遍历)+(二叉树、迭代)
- [LintCode] 二叉树的层序遍历 Binary Tree Level Order Tranversal
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- 【遍历二叉树】07恢复二叉搜索树【Recover Binary Search Tree】
- 5.1.4—二叉树的遍历—Binary Tree Level Order Traversal
- LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
- LeetCode:105_Construct Binary Tree from Preorder and Inorder Traversal | 根据前序和中序遍历构建二叉树 | Medium
- LeetCode | Binary Tree Level Order Traversal II(二叉树层序遍历II)
- HDU 1710(Binary Tree Traversals)二叉树的遍历
- leetcode 110. Balanced Binary Tree-平衡二叉树|深度遍历