(015)实现一个函数检查一棵树是否平衡(keep it up)
2014-08-29 02:41
393 查看
实现一个函数检查一棵树是否平衡。对于这个问题而言, 平衡指的是这棵树任意两个叶子结点到根结点的距离之差不大于1。
这个题我们可以采用暴力搜索,找到叶子节点到根节点的最小值和最大值,然后他们的差如果大于1就不是平衡树,反之
则是平衡树。
这个题我们可以采用暴力搜索,找到叶子节点到根节点的最小值和最大值,然后他们的差如果大于1就不是平衡树,反之
则是平衡树。
int MinDepth = std::numeric_limits<int>::max(); int MaxDepth = std::numeric_limits<int>::min(); struct TreeNode { int data; TreeNode* child; TreeNode* brother; }; bool isBlanceTree(const TreeNode* vNode, int vDepth=0) { if (vNode == NULL) { if (vDepth == 0) return true; if (vDepth < MinDepth) { MinDepth = vDepth; } if (vDepth > MaxDepth) { MaxDepth = vDepth; } if (MaxDepth - MinDepth > 1) return false; return true; } bool IsBlance = true; if (vNode->child != NULL) { IsBlance = isBlanceTree(vNode->child, vDepth+1); } if (IsBlance && vNode->brother != NULL) { IsBlance = isBlanceTree(vNode->brother, vDepth); } return IsBlance; }
相关文章推荐
- (015)实现一个函数来检查是否平衡树(keep it up)
- 程序员面试金典: 9.4树与图 4.1实现一个函数检查二叉树是否平衡。
- 实现一个函数,检查二叉树是否平衡。
- 程序员面试金典: 9.4树与图 4.1实现一个函数检查二叉树是否平衡——O(N)时间解法
- 013使用两个栈实现一个队列(keep it up)
- 008实现一个算法从一个单链表中返回倒数第n个元素(keep it up)
- 008实现一个算法从一个单链表中返回倒数第n个元素(keep it up)
- 009实现一个算法来删除单链表中的一个结点,仅仅给出指向那个结点的指针(keep it up)
- 009实现一个算法来删除单链表中的一个结点,只给出指向那个结点的指针(keep it up)
- 检查一个二叉树是否平衡的算法分析与C++实现
- 检查一个二叉树是否平衡的算法分析与C++实现
- 014敲代码将一个栈按升序排序,对这个栈是怎样实现的,你不应该做不论什么特殊的如果(keep it up)
- 014写程序将一个栈按升序排序,对这个栈是如何实现的,你不应该做任何特殊的假设(keep it up)
- 程序员面试金典: 9.4树与图 4.5实现一个函数,检查一颗二叉树是否为二叉查找树
- 实现一个函数,判断输入字符串是否对称?
- 写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)
- 检查一个字符串中是否包含另一个字符的函数
- 任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现:排序用函数实现
- [函数]function CheckUrl(url: string): Boolean; //检查一个URL是否有效函数
- Chapter 4 | Trees and Graphs--检查一棵树是否平衡以及判断一棵树是否为平衡二叉树