赞
踩
树是一种非线性的数据结构,它是由 n (n≥0) 个有限结点组成一个具有层次关系的集合。之所以称之为"树",是因为它的结构看起来像一棵倒挂的树,根朝上,叶子朝下。树具有以下特点:
需要注意的是:
左孩子右兄弟表示法是树形结构的一种常见且最优的存储方式。其结点结构如下:
struct TreeNode {
int val;
struct TreeNode* firstChild; // 指向最左边的第一个孩子结点
struct TreeNode* nextSibling; // 指向当前节点右边一个兄弟结点
};
双亲表示法不存储指向孩子的指针,只存储指向父亲的指针或下标。
二叉树是一种特殊的树形结构,它实行了"计划生育",每个节点最多只能有两个孩子。二叉树具有以下特点:
满二叉树是指一棵二叉树的每一层节点数都达到最大值。对于一棵高度为 h 的满二叉树,它一共有 (2^h)-1 个节点。证明如下:
设 F(h) 表示高度为 h 的满二叉树的节点总数,则有:
F(h) = 2^0 + 2^1 + 2^2 + ... + 2^(h-2) + 2^(h-1)
这是一个等比数列,其前 n 项和公式为:
Sn = (a1 * (1 - q^n)) / (1 - q)
代入 a1 = 1, q = 2, n = h,得:
F(h) = (2^h) - 1
另一种证明方法是错位相减法:
F(h) = 2^0 + 2^1 + 2^2 + ... + 2^(h-2) + 2^(h-1)
F(h) = 2^h - 2^0 = 2^h - 1
完全二叉树是由满二叉树引出来的,其效率很高。满二叉树是完全二叉树的一种特殊情况。
假设二叉树的高度为 h,则完全二叉树满足以下条件:
对于高度为 h 的完全二叉树,其节点数的范围是 [2^(h-1), 2^h - 1]
。
以上就是对树的基本概念以及二叉树的介绍。树是一种非常重要且常用的数据结构,在计算机科学领域有着广泛的应用。深入理解树的概念和特性,对于解决实际问题和优化算法设计都有很大帮助。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。