思路 方法一:辅助队列保存对应层数 我们可以用广度优先搜索解决这个问题。 我们可以想到最朴素的方法是用一个二元组 (node, level) 来表示状态,它表示某个节点和它所在的层数,每个新进队列的节点的 level 值都是父亲节点的 level 值加一。 最后根据每个点的 level 对点进行分类 ...
分类:
其他好文 时间:
2020-11-01 21:30:46
阅读次数:
22
递归算法 { if(bt!=NULL) { InOrder(bt->lchild); printf("%d",bt->data); InOrder(bt->rchild); } } 非递归算法 Void InOrder(BTNode *bt) { BTNode *p=bt; int top =0; ...
分类:
其他好文 时间:
2020-11-01 21:18:59
阅读次数:
20
树是什么 ? 线性结构中,一个节点至多只有一个头节点,至多只有一个尾节点,彼此连接起来是一条完整的线。 比如链表和数组; ? 而树,非线性结构的典型例子,不再是一对一,而变成了一对多(而图则可以是 多对多),树如下图所示: 基本概念 如下图: 根节点 :A 父节点 : A是B、C的父节点;B是D、E ...
分类:
其他好文 时间:
2020-11-01 21:13:47
阅读次数:
13
据后序和中序遍历输出先序遍历 -1 根据后序和中序遍历输出先序遍历 (25分) 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。 输入格式: 第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题 ...
分类:
其他好文 时间:
2020-11-01 10:27:16
阅读次数:
21
参考: https://www.cnblogs.com/g177w/p/8469399.html java数据结构 堆 1.堆:堆是一种树,由它实现的优先级队列的插入和删除的时间复杂度都是O(logn),用堆实现的优先级队列虽然和数组实现相比较删除慢了些,但插入的时间快的多了。当速度很重要且有很多插 ...
分类:
编程语言 时间:
2020-11-01 10:03:45
阅读次数:
14
3种常见的遍历方式如下: 中序遍历:左子节点->根节点->右子节点 先序遍历:根节点->左子节点->右子节点 后序遍历:左子节点->右子节点->根节点 为方便记忆,可以理解为根节点的相对位置 中序:根节点出现在左右子树中间 先序:根节点出现在子树之前 后序:根节点出现在子树之后 树节点的定义 /** ...
分类:
编程语言 时间:
2020-11-01 09:45:25
阅读次数:
19
给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归: 思路: 1.先序遍历,采用的是先根,再左,再右的方式 2.而在访问左子树或者右子树的时候,我们按照同样的方式遍历, ...
分类:
其他好文 时间:
2020-10-31 01:34:45
阅读次数:
19
基本介绍 给定n个权值作为n个叶子节点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,这样的二叉树为最优二叉树,也称为赫夫曼树 赫夫曼树是带权路径长度最短的数,权值较大的节点离根较近 赫夫曼树几个重要概念 1.路径和路径长度:在一棵树中,从一个节点往下可以达到的孩子或孙子节点之间的通路,称 ...
分类:
其他好文 时间:
2020-10-31 01:25:46
阅读次数:
21
题目描述 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 示例1: 输入: [1,2,3] 1 / \ 2 ...
分类:
其他好文 时间:
2020-10-29 10:47:38
阅读次数:
36
1. 树的概念 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 每个节点有 ...
分类:
编程语言 时间:
2020-10-29 10:40:09
阅读次数:
25