题意:
两棵树(10^5个节点) 问其中有多少对子树是同构的
思路:
树的同构一般使用hash来判断
hash函数为1、val=A 2、val = (val*P)^Soni%Q 其中Soni为第i个子树的hash值 3、val=val*B%Q
注意Son值应该排序 (本题因为左右子树是区分开的 因此不用排序)
代码:
#include
#include
#include...
分类:
其他好文 时间:
2015-01-24 13:10:45
阅读次数:
156
1. 简要介绍 关于二叉树问题,由于其本身固有的递归属性,通常我们可以用递归算法来解决。(《编程之美》,P253) 总结的题目主要以leetcode题目为主。2. 测试用例 功能测试:平衡的二叉树,不是平衡的二叉树,二叉树中所有节点都没有左/右子树 特殊输入测试:二叉树只有一个节点,二叉树...
分类:
其他好文 时间:
2015-01-20 21:59:39
阅读次数:
145
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.思路:题目看上去好像很难,但实际上很简单,递归做就行,每次找到左右子树对应的子链表...
分类:
其他好文 时间:
2015-01-18 21:03:17
阅读次数:
241
题目:Given an array where elements are sorted in ascending order, convert it to a height balanced
BST.
思路:给出一个排序的数组,如何构造一个平衡二叉查找树?平衡二叉查找树要求任一结点的左右子树的高度差不能超过一,也叫做高度平衡树。如果让我们从一个排序数组中选取一个元素做树的根,我们会选择哪一个...
分类:
编程语言 时间:
2015-01-16 16:51:25
阅读次数:
237
二叉搜索树(1)定义二叉搜索树(Binary Search Tree),也称二叉排序树或二叉查找树一棵二叉树,可以为空;如果不为空,满足以下性质:a.非空左子树的所有键值小于其根节点的键值b.非空右子树的所有键值大于其根节点的键值c.左右子树都是二叉搜索树(2)相关操作Position Find( ...
分类:
其他好文 时间:
2015-01-14 00:44:20
阅读次数:
210
1.二叉排序树的概念:二叉排序树是一种动态树表。 二叉排序树的定义:二叉排序树或者是一棵空树, 或者是一棵具有例如以下性质的二叉树: ⑴ 若它的左子树非空,则左子树上全部结点的值均小于根结点的值; ⑵ 若它的右子树非空,则右子树上全部结点的值均大于根结点的值; ⑶ 左、右子树本身又各是一棵二叉排序树...
分类:
编程语言 时间:
2015-01-12 14:35:25
阅读次数:
338
判断完全二叉树:
完全二叉树,除最后一层外,每一层上的节点树都达到了最大值;在最后一层上只缺少右边的若干节点!
算法思路:
按层次(从上到下,从左到右)遍历二叉树,当遇到一个节点的左子树为空时,则该节点右子树必须为空,且后面遍历的节点左
右子树都必须为空,否则不是完全二叉树。
代码:
bool IsCompleteBTree(BTree* pRoot)
{
if (pRoot =...
分类:
编程语言 时间:
2015-01-12 13:06:28
阅读次数:
475
二叉排序树的特征二叉排序树或者是一棵空树,或者是具有如下特性的二叉树: 1.每一元素都有一个键值, 而且不允许重复; 2.若它的左子树不空,则左子树上所有结点的值均小于根结点的值; 3.若它的右子树不空,则右子树上所有结点的值均大于根结点的值; 4.它的左、右子树也都分别是二叉排序树。二叉排序树保存的元素构造template
class Element
{
public:...
分类:
其他好文 时间:
2015-01-11 16:17:11
阅读次数:
285
//叶子节点的个数
/*
(1)如果二叉树为空,返回0
(2)如果二叉树不为空且左右子树为空,返回1
(3)如果二叉树不为空,且左右子树不同时为空,返回左子树中叶子节点个数加上右子树中叶子节点个数
*/
int GetLeafNodeNum(BTree* root)
{
if(root == NULL)
return 0;
if(root->m_pLeft == NUL...
分类:
编程语言 时间:
2015-01-06 15:36:02
阅读次数:
208
1、是二叉搜索树(Binary Search Tree)2、树和所有左右子树高度之差为-1,0,1平衡因子(balance factor) =右子树高度-左子树高度平衡化旋转: 1、从插入位置向根节点计算节点的平衡因子; 2、若发现不平衡点(即平衡因子绝对值大于1),从此节点向下取两层; 3...
分类:
其他好文 时间:
2015-01-04 01:07:09
阅读次数:
421