建立一个二叉树,求其高度,首先前、中、后序遍历,求叶子数,求树深度并且判断是否为平衡二叉树。二叉树是一个典型的数据结构,华为往年的试题中也有考到这个知识点的。下面介绍几个树的重要性质:
性质1 二叉树第i层上的结点数目最多为2^(i-1)(i≥1)。
性质2 深度为k的二叉树至多有2^k-1个结点(k≥1)。
性质3 在任意-棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n...
分类:
其他好文 时间:
2015-06-28 18:55:17
阅读次数:
168
非递归: public static int maxDepth(TreeNode root){ if(root==null) return 0; Queue q=new LinkedList(); q.offer(root); int enQu...
分类:
其他好文 时间:
2015-06-24 12:26:34
阅读次数:
98
//你知道为什么快速排序的时间复杂度是nlgn吗?
//我们将数组当作完全二叉数来看的话,放在小堆中,
//每个节点排序需要o(h),也就是h次,h是完全相应节点的二叉树高度,
//N为总共节点数,排好一个节点需要o(h)次,那么排好N个节点呢?下面:
//且2^h=N-1(完全二叉树性质);
//—>h=log2(N);当有N个节点需要排序是就是N*lg(N),
//得到快速排序的时...
分类:
编程语言 时间:
2015-05-09 10:22:04
阅读次数:
163
求解二叉树的高度
树是递归定义的,所以用递归算法去求一棵二叉树的高度很方便。
#include
#include
using namespace std;
struct Node {
char data;
Node *lchild;
Node *rchild;
};
void High(Node *T, int &h)...
分类:
其他好文 时间:
2015-03-29 22:13:14
阅读次数:
239
利用递归来求一棵树的高度,基本思想是:对于每一个非空节点,先求取其左子树的高度,然后求取其右子树的高度,最后取两子树中较高的一个加1作为以该节点为根的树的高度;对于空节点,直接返回0就可以了。求整棵树的高度只需将此思想运用到根节点上即可。struct BST_Node
{
int m_value;
BST_Node* left_child;
BST_Node* rigth_c...
分类:
其他好文 时间:
2015-02-07 09:07:54
阅读次数:
260
4.3 给定一个有序整数数组,元素各不相同按升序排列,编写一个算法,创建一棵高度最小的二叉查找树。解答想要使构建出来的二叉树高度最小,那么对于任意结点, 它的左子树和右子树的结点数量应该相当。比如,当我们将一个数放在根结点, 那么理想情况是,我们把数组中剩下的数对半分,一半放在根结点的左子树, 另一...
分类:
其他好文 时间:
2014-12-06 11:19:29
阅读次数:
145
因为树本身就是递归定义,创建也可以递归创建,所以高度不也可以递归获得嘛?如下:int getHeight(Node* pNode){ if (pNode) { 左树高度 = getHeight(pNode->lChild) 右树高度 = getHeight...
分类:
其他好文 时间:
2014-08-20 12:00:12
阅读次数:
201
今天总结一下二叉树,要考离散了,求不挂!二叉树最重要的就是 建立、4种遍历方式,简单应用
二叉树分为 :1、完全二叉树 2、满二叉树
结构性质:
1).满二叉树 高度为h ,节点数则为 2^h - 1,且叶子节点全在最下层,且叶子节点数为2^(n-1)个{n代表二叉树层数,也叫深度}
2).n个节点的 完全二叉树 深度为 int(log2n)(以2为底n的对数...
分类:
其他好文 时间:
2014-06-01 17:18:03
阅读次数:
549
原题地址:http://oj.leetcode.com/problems/balanced-binary-tree/题意:判断一颗二叉树是否是平衡二叉树。解题思路:在这道题里,平衡二叉树的定义是二叉树的任意节点的两颗子树之间的高度差小于等于1。这实际上是AVL树的定义。首先要写一个计算二叉树高度的函...
分类:
编程语言 时间:
2014-05-12 14:51:47
阅读次数:
304