【题目】
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
【题意】
给定一个已排序的数组(不存在重复元素),将它转换成一棵平衡二叉搜索树。
【思路】
由于平衡二叉树要求左右子树的高度差绝对值相遇等于1,也就是说左右子树尽可能包含相同数目节点。
则使用二分法来解本题即可。...
                            
                            
                                分类:
其他好文   时间:
2014-06-20 11:03:31   
                                阅读次数:
246
                             
                         
                    
                        
                            
                            
                                题目链接题意: 给定一棵二叉树, 判断是否为平衡二叉树, 这里的平衡二叉树指的是:每个结点的左右子树的深度之差不超过1。附上代码: 
1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * ...
                            
                            
                                分类:
其他好文   时间:
2014-06-08 18:58:35   
                                阅读次数:
194
                             
                         
                    
                        
                            
                            
                                treap模版暂存。以后修改整理。#include#include#include 
#includeusing namespace std;struct Node{ Node *ch[2];//左右子树 int 
r;//优先级。数值越大,优先级越高 int v;//值 int...
                            
                            
                                分类:
其他好文   时间:
2014-05-30 01:45:16   
                                阅读次数:
250
                             
                         
                    
                        
                            
                            
                                堆排序算法使用二叉堆实现排序,树上的每一个节点对应数组中的一个元素。第一步:使用MAX_HEAPIFY维护一个最大堆(所有孩子节点都必须小于或等于其父节点)。它的输入为一个数组A和一下标i,调用MAX_HEAPIFY时,假设节点i的左右子树都是最大堆。伪码: 
1 LEFT(i) 2 return.....
                            
                            
                                分类:
其他好文   时间:
2014-05-29 21:35:08   
                                阅读次数:
364
                             
                         
                    
                        
                            
                            
                                原题地址:https://oj.leetcode.com/problems/same-tree/题意:判断两棵树是否是同一棵树。解题思路:这题比较简单。用递归来做。首先判断两个根节点的值是否相同,如果相同,递归判断根的左右子树。代码:# 
Definition for a binary tree n....
                            
                            
                                分类:
编程语言   时间:
2014-05-26 10:30:17   
                                阅读次数:
289
                             
                         
                    
                        
                            
                            
                                思路:这道题目关键在于不能创建新的节点,如不然,我们可以直接将二叉排序树中序遍历保存到一个数组中,而后再建立一个双性链表,将数据保存到双向链表里。
    这里不能创建新节点,我们只能改变节点的指向左右子树的节点,让其变为指向二叉链表中的前后节点,很明显这里同样用的是中序遍历,因此这道题目依然是中序遍历的变种,中序递归构造实现即可,每次递归都保存一个指向已构造好的双向链表的尾节点的指针,将其与下一个节点连接起来。
    另外,这道题OJ的输出格式与前面的不同,输出样例中又没有说明,我试了三次才AC,前两次...
                            
                            
                                分类:
其他好文   时间:
2014-05-26 05:21:59   
                                阅读次数:
189
                             
                         
                    
                        
                            
                            
                                题目:输入一颗二叉树的根结点,判断该二叉树是不是平衡二叉树。平衡二叉树是满足所有结点的左右子树的高度差不超过1的二叉树
方案一:遍历数组的每一个结点,对每一个结点求它的左右子树的高度并进行判断。时间复杂度大于O(n),小于O(n^2)效率较低,因为有很多点需要重复访问。
//二叉树的结点
struct BinaryTreeNode{
     int m_value;
     Bin...
                            
                            
                                分类:
其他好文   时间:
2014-05-26 04:34:53   
                                阅读次数:
192
                             
                         
                    
                        
                            
                            
                                概述 哈夫曼树:树的带权路径长度达到最小。 构造规则 1. 将w1、w2、…,wn看成是有n 
棵树的森林(每棵树仅有一个结点); 2. 
在森林中选出根结点的权值最小的两棵树进行合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和; 3. 
从森林中删除选取的两棵树,并将新树加...
                            
                            
                                分类:
其他好文   时间:
2014-05-24 02:49:48   
                                阅读次数:
257
                             
                         
                    
                        
                            
                            
                                uva 548 Tree
题目大意:
	给定一个二叉树的中序和后序遍历,求二叉树到每个叶节点的路径和最小的那个叶节点的值。
解题思路:
	先建树,后dfs,建树也就是后序的最后一个就是二叉树的当前节点的值,再在中序中找到这个值,那么左边就是左子树,右边就是又子树,再从后序中找出相应的左右子树的后序,然后划分为子问题递归求解。...
                            
                            
                                分类:
其他好文   时间:
2014-05-23 08:10:59   
                                阅读次数:
255
                             
                         
                    
                        
                            
                            
                                /**根据完美二叉树或者非完美二叉树都可以,利用左右子树的根节点的next节点信息来连接next*/public void 
connect(TreeLinkNode root){ if(root==null) return; //利用父节点的next...
                            
                            
                                分类:
其他好文   时间:
2014-05-22 03:03:39   
                                阅读次数:
183