![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构学习
chenpidaxia
目前只是一个学生
展开
-
二叉树的层序遍历
层序遍历不是二叉树所特有的,但使用二叉树来讲解是因为在视觉和理解上更直观。顾名思议,按层遍历。如下图: 树的层序遍历对应到了图中的宽度优先搜索,需要使用一个队列辅助遍历过程,从图中也可以看出其遍历过程很符合队列的性质。初始化一个空队列,我们让根节点入队,然后出队,查看出队节点的左孩子是否为空,非空的话,出队节点左孩子入队,查看出队节点的右孩子是否为空,非空的话,出队节点的右孩子入队。然后重复,原创 2017-05-06 14:18:18 · 480 阅读 · 0 评论 -
求二叉树的深度
日常我们的思维以及书本上为了定义二叉树的深度,都是从根节点出发往下数,最深的叶子所在层数代表了二叉数的深度,这个思考过程是自顶向下的。但我们使用计算机来解决这个问题时,在编码上就会不好下手,从自顶向下的角度入手,没有利用上二叉树自身特有的结构性质。我们可以逆向思维一下,利用上二叉树的最小子结构的特点,自底向上的从叶子节点向根结点的角度来思考。 下面我们定义,二叉树中的所有有效节点(非空节点,标注为原创 2017-05-06 15:43:54 · 687 阅读 · 0 评论 -
求二叉树的最浅叶子所在层数
呃呃呃,一看到问题可能会有点懵逼。 二叉树的最浅叶子层数,所在层数最低的叶子节点,也就是在层的度量上里根节点最近的叶子节点。和求二叉树深度是相对的问题,更新规则和求二叉树的深度类似,只是更新规则变成了 节点的新层数 = 该节点未更新前的层数 + min(左孩子层数,右孩子层数)。 这样最后到达,根节点的时候计算得到的就是最浅叶子层数。 其实除了更新规则不同,代码的思路都是一样的。 //注意原创 2017-05-06 16:57:11 · 1557 阅读 · 1 评论 -
数据结构学习之二叉树
二叉树二叉树的子结构抽象数据类型代码二叉树的递归构造过程二叉树的四种遍历引申问题二叉树二叉树是树型数据结构中的特例,对于每一个节点(除根节点外)都仅有一个前驱和两个后继,根节点仅有两个后继。 众所周知,自然界中的树有一种数学特性叫做分形,意思大概就是“大个的我由很多个小个的我组成”。有一种自相似的特性。而二叉树这种数据结构呢也具有这种特性,具有自相似性。所以通常我们见到和二叉树有关的构建原创 2017-03-10 17:15:33 · 496 阅读 · 0 评论