思路1: 非递归, 用层次遍历算法求二叉树的高度 关键: 1、last指针何时指向下一层 代码1: int getBiTreeDepth(BTNode *t){ //1.创建队列 2.初始化工作=>根节点入队 BTNode *que[MAXSIZE]; int front=-1,rear=-1;//front和rear指针必须是负1,否则front和last永远都不能相遇 int level=0,last=0;//last指针始终指向当前层的最右结点 rear=(rear+1)%MAXSIZE; que[re…

2021年8月23日 0条评论 10点热度 阅读全文

给树的后序和中序遍历,求先序遍历 假设有一棵树长这样 很容易写出他的后序遍历DBAGFEC 也很容易写出他中序遍历DABCGEF 1.后序遍历是前后根,根节点永远是最后一个,因此我们可以找到根节点c 2.要我们输出前序遍历,因为根节点永远在前面,所以每次找到就输出就好了 3.之后用find函数找到根节点c在中序遍历中的位置,划分为两段DAB GEF,然后中序遍历这两段,注意一定要是先递归DAB再递归GEF不然的话就是根后前而不是根前后了 4.也将后序遍历划分为两段DAB GFE,用后序遍历递归下去 好了,直接上代码…

2021年4月13日 0条评论 4点热度 阅读全文

题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。 输入描述: 输入包括1行字符串,长度不超过100。 输出描述: 可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。 每个输出结果占一行。 示例1 输入 abc##de#g##f### 输出 c b …

2021年3月13日 0条评论 3点热度 阅读全文

遍历二叉树,是学习树这种数据结构首先要理解的一种基本操作。比较简单地方式就是用递归去遍历,鉴于递归这种调用方法有一定的特殊性,今天还是想来讲讲怎么去理解递归遍历。本文针对想理解递归的过程的朋友,因为本人在学到这一部分的时候也纠结了很久,其实只要理解了过程,那以后写递归的代码再也不用“心虚”了,因为那个过程是可预测的,可证明的。 递归调用的特殊性在于自己调用自己,给人一种迷茫感,如果是递归调用“一次”,那还相对好理解,比如求阶乘的递归算法, int F(int n) { if(n==0)//递归边界  &n…

2021年2月28日 0条评论 82点热度 阅读全文

数据结构-常用树总结 0x01 摘要 本文会简单说下常用的树形结构如AVL树、红黑树、B树、B+树的一些知识点,从时间复杂度、使用场景等作对比。 要看各种树的真实效果,可使用动态使用各种数据结构看效果网页 0x02 对比 名称 简介 旋转规则 插入 删除 查找 使用场景 AVL树 高度平衡二叉查找树,左右子树高度差不超过1 不满足高度平衡就旋转直到平衡 O(logN) O(logN),但最坏旋转logN次 O(logN) 查找多,数据变动少 红黑树 根黑叶黑,红带两黑。非叶到叶黑树相等,且路径相差不会超过1倍,非高…

2021年2月28日 0条评论 72点热度 阅读全文

转载请注明出处:https://blog.csdn.net/Benja_K/article/details/88389039 二叉树的非递归前、中、后序遍历算法详解及代码实现(C语言) 1. 前序遍历和中序遍历非递归算法思路 前序和中序非递归遍历的C代码 2. 后序遍历非递归算法思路 后序非递归遍历的C代码 1. 前序遍历和中序遍历非递归算法思路 遍历过程:(如图所示) 图1 前序遍历和中序遍历流程图   从当前节点开始遍历:(当入栈时访问节点内容,则为前序遍历;出栈时访问,则为中序遍历) 1. 若当前节…

2021年2月28日 0条评论 51点热度 阅读全文

待完成。。。 《统计学习方法》各章节代码实现与课后习题参考解答 章节 代码 课后习题 第1章 统计学习方法概论(LeastSquaresMethod) 传送门 传送门 第2章 感知机(Perceptron) 传送门 传送门 第3章 k近邻法(KNearestNeighbors) 传送门 传送门 第4章 朴素贝叶斯(NaiveBayes) 传送门 传送门 第5章 决策树(DecisonTree) 传送门 传送门 第6章 逻辑斯谛回归(LogisticRegression) 传送门 传送门 第7章 支持向量机(SVM)…

2021年2月28日 0条评论 57点热度 阅读全文

如何创建一个二叉树,先序遍历,中序遍历。 #include <stdio.h> #include <stdlib.h> #include<bits/stdc++.h> #define NULLKEY '?' typedef struct btnode { char data; struct btnode *lchild,*rchild; }btnode,*bitree; //创建一个二叉树 bitree preCreateBitree(bitree &root) { ch…

2021年2月28日 0条评论 60点热度 阅读全文

HashMap 是后端面试的常客,比如默认初始容量是多少?加载因子是多少?是线程非安全的吗?put 操作过程复述下?get 操作复述下?在 jdk 1.7 和 1.8 实现上有什么不同?等等一系列问题,可能这些问题你都能对答如流,说明对 HashMap 还是比较理解的,但最近我们团队的同学做了一个技术分享,其中有几点我挺有收获的,我给大家分享下 我们每周五都会进行技术分享,大家轮流分享,其实这种机制挺好的,大家坐在一起深入讨论一个知识点,进行思维的碰撞,多赢 抛出两个问题,看你能否回答出来? 如何找到比设置的初始容…

2021年2月28日 0条评论 58点热度 阅读全文

本文主要内容 [ kD-tree的C语言实现 ]是多年前写过的一篇kd-tree的博客。当时正在看李航老师的《统计学习方法》一书,看到kNN算法和kd-tree之间的关系,非常有兴趣进行深入了解,所以汇总了一些资料,后面由于实际工作中用不到,就放下了。最近重新翻了翻李老师的这本书,发现现在的理解比以前深了很多,而且这种经典是常看常新的,每多翻一次,就多一分收获。 本文主要内容: - kNN算法与kd-tree的关系 - kd-tree的构建 - kd-tree的近邻查找 kNN算法与kd-tree的关系 K最近邻(…

2021年2月28日 0条评论 57点热度 阅读全文