关于数据结构
Posted yian_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于数据结构相关的知识,希望对你有一定的参考价值。
二叉树相关:
定义,性点
二叉树是一种树形结构,其特点是每个结点至多只有两颗子树,并且二叉树的子树有左右之分。
非空二叉树叶子结点数等于度为2的结点的个数加1,即N0 = N2 + 1
非空二叉树上第K层上至多有2^(k-1)个结点。
高度为H的二叉树至多有2^H - 1个结点
树的最大度为2
树的高度:从所有叶节点开始数高度到根节点,其中的最大值;也就是从结点x向下到某个叶结点最长简单路径中边的条数。(从下往上数)
树的深度:是从根节点往下数
找出二叉树中两个节点最远的距离 (最远两个节点的距离)
一:情况之一是根结点有左右子树
(既然是最远,两个节点肯定是位于根结点的左右,左右之分。
两个节点肯定是叶子节点。
两个节点肯定是位于各自当前子树(相对于根结点)最大深度)
二:情况之二是根结点只有一个子树
(最远的距离就在根节点的其中一个子树上的两个叶子结点。)
距离最远的两点必然在以某个节点A为根的子树上,它们间的路径必然经过该子树的根节点A。
因而,以任意一个节点B为根的子树,计算出经过该子树根节点B的最大距离,则所有最大距离的最大值就是所要求的二叉树的最大距离,即“树的直径”。
而经过树的根节点的最大距离为:左子树的高度+右子树的高度+2(假设空节点的高度为-1),因而,原问题等同于“计算每个节点的左子树和右子树的高度和,取最大值”。
计算二叉树中两个节点最远的距离 (其实也就是求左子树的最大高度,到根节点(也就是加一),然后求右子树的最大高度,到根节点(也就是加一),总结来说。就是根结点的左,右子树的最大高度 加2)
求二叉树的深度
二叉树的深度:它等于左子树和右子树中的最大深度加 1 (有两个过程,求左子树的深度,(非整棵树的深度),以及右子树的深度(非整棵树的深度),然后,加上根结点(也就是加一))
类似过程可
以上是关于关于数据结构的主要内容,如果未能解决你的问题,请参考以下文章