说说:
还是简单的二叉树遍历的题目。这道题不过是将一棵树的左右子树作为杠杆。若存在左子树于相应距离的乘积和右子树相应距离的乘积不等,或者说不平衡,则输出NO。全部平衡,则整棵树平衡,输出YES。解法的话,递归判断即可。
源代码:
#include
int mobile(int*);
int main(){
int T,w;
//freopen("data","r",stdin)...
分类:
其他好文 时间:
2014-09-11 15:21:51
阅读次数:
146
写程序在一棵二叉树中找到两个结点的最近共同祖先。
分两种情况来讨论这个题:
第一种情况结点中没有指向父结点的指针
第二种情况接种有指向父节点的指针
我们先看第一种情况,结点中没有指向父结点的指针。
我们可以采用暴力搜索每一个结点,如果这个结点的子树中
有已知的两个结点,那我们就继续沿着左右子树找,如果左子树
能找到,我们就继续沿着左子树找,如果有子树能找到,我们就
沿着右子...
分类:
其他好文 时间:
2014-09-07 02:13:34
阅读次数:
165
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3602
题意:给出一棵有n个节点的二叉树和一棵有m个节点的二叉树,给出每个节点的左右子树信息,问这两棵树有几个相同的子树。
思路:树的同构,比赛时没想法,赛后看的别人的解题报告。实际上是给每个节点的左右子树一个哈希值,不用像字符串哈希那么麻烦,直接给每个子树...
分类:
其他好文 时间:
2014-09-05 18:18:31
阅读次数:
251
只能根据前序中序或者中序后序重建二叉树,不可能根据前序和后序重建,因为需要中序去划分左右子树。
代码实现
/**
* 源码名称:ConstructBT.java
* 日期:2014-09-05
* 程序功能:重建二叉树(前序中序)
* 版权:CopyRight@A2BGeek
* 作者:A2BGeek
*/
public class ConstructBT {
class...
分类:
其他好文 时间:
2014-09-05 13:01:55
阅读次数:
206
AVL树本质上还是一棵二叉搜索树,它的特点是:
本身首先是一棵二叉搜索树。
带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1
#include
using namespace std;
const int LH = 1;
const int EH = 0;
const int RH = -1;
bool TRUE = 1;
bool F...
分类:
其他好文 时间:
2014-09-02 17:46:25
阅读次数:
176
1.取出先序的第一个节点。(先序中的节点为根节点)2.用第一个节点可以将中序分成左右子树,然后又取出先序的第二个节点再次将左右子树再次划分,3,当将中序全部划分为单个点时就结束。例如:假设一颗二叉树的先序序列是:EBADCFHGIKJ。中序序列为:ABCDEFGHIJK。请画出该二叉树。
分类:
其他好文 时间:
2014-08-29 17:52:28
阅读次数:
212
给定有序链表(元素由小到大), 试问如何将其转换为一个平衡BST?平衡BST: 任意节点的左右子树的深度差值不大于1.主要思想是用递归. Trick是使用快慢指针来获取中间节点. 获得中间节点后, 将其设为此次递归的root, 随后删除此节点, 并将前一节点的next置NULL. 随后, 对中间节点...
分类:
其他好文 时间:
2014-08-28 11:15:19
阅读次数:
162
思路: f(n) = Σi=1n f(n-i)*f(i-1), 其中 f(0) = f(1) = 1; 利用动归记下之前的 f(2)~f(n-1)即可。
思路:分别以 1~n 为根节点,左右子树根的集合数量相乘,递归,依次得出结果。
分类:
其他好文 时间:
2014-08-27 20:22:28
阅读次数:
278
思想: 迭代。
说明: 这类问题,要求一个提供根节点,然后另一个序列(中序序列)可依据根节点分出左右子树。
分类:
其他好文 时间:
2014-08-27 20:20:38
阅读次数:
198
思想:先序遍历。注意的是: 当只有一个孩子结点时,深度是此孩子结点深度加 1 .
思想: 先序遍历。既要返回左右子树判断的结果,又要返回左右子树的深度进行再判断。
所以要么返回一个 pair, 要么函数参数增加一个引用来传递返回值。
分类:
其他好文 时间:
2014-08-27 18:25:08
阅读次数:
207