先序遍历与中序遍历的代码实现是差不多的 只是把访问节点的操作放到了入栈操作前 代码实现: #include <stdio.h> #include <string.h> #include <stdlib.h> #define ElementType char int top = -1; //定义top ...
分类:
其他好文 时间:
2020-07-31 18:04:02
阅读次数:
118
题目引出的思考: 前面学习中,一般都是需要前序+中序或者后序+中序才能构建出一颗二叉树,故本道题中一开始并未给出中序遍历,心中疑惑便出,是否该二叉树不唯一?再细看是二叉排序树,仔细分析显然可得二叉排序树中的中序遍历必然是递增的,故排除自己的错误想法。 证明: 如果一棵非空二叉树(所有结点值均不相同) ...
分类:
编程语言 时间:
2020-07-30 14:49:05
阅读次数:
129
思路: 中序:左->根->右 1.需要一个建立一个栈,首先将左子树放入栈中 2.获取栈顶元素并进行节点判断是否有右子树 3. 代码: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode ...
分类:
其他好文 时间:
2020-07-27 23:50:51
阅读次数:
62
二叉排序树 二叉排序树:BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。 二叉排序树创建和遍历 ? 一个数组创建成对应的二叉排序树,并使用中序遍历二叉排序树 使用中序遍历的二叉树结点 ...
分类:
编程语言 时间:
2020-07-27 09:35:38
阅读次数:
81
题目:传送门 方法一、递归 中序遍历:先遍历左子树,在遍历根节点,最后遍历右子树。比较经典的方法是递归。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeN ...
分类:
其他好文 时间:
2020-07-26 15:32:51
阅读次数:
67
用C/C++编写二叉树的前序遍历,中序遍历,后序遍历(递归) 使用辅助队列的层序遍历(非递归) 特别说明一下层次遍历:借助一个队列,先将二叉树根结点入队,然后出队,访问出队结点,若它有左子树,则将左子树根结点入队;若它有右子树,则将右子树树根结点入队。然后出队,访问出队结点.......如此反复,直 ...
分类:
其他好文 时间:
2020-07-23 16:22:22
阅读次数:
66
二叉树重建 问题:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重 复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解决: #递归一 # class Tree ...
分类:
其他好文 时间:
2020-07-23 16:17:32
阅读次数:
71
图解 二叉树的四种遍历 LeetCode 题目中,二叉树的遍历方式是最基本,也是最重要的一类题目,我们将从「前序」、「中序」、「后序」、「层序」四种遍历方式出发,总结他们的递归和迭代解法。 题目说明 这里是 4 道相关题目: 144.二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序 ...
分类:
其他好文 时间:
2020-07-22 01:49:52
阅读次数:
113
https://www.luogu.com.cn/problem/P1030 1 #define bug(x) cout<<#x<<" is "<<x<<endl 2 #define IO std::ios::sync_with_stdio(0) 3 #include <bits/stdc++.h> ...
分类:
其他好文 时间:
2020-07-21 21:48:07
阅读次数:
55
7. 重建二叉树 题意:面试题07. 重建二叉树 思路:前序遍历的顺序是“根-左-右”,中序遍历的顺序是“左-中-右”。 那么,对于整棵树前序遍历的结果,第一个值r一定是树的根结点。如果在中序遍历的结果中找到r的位置index,那么index左边的子数组就都是根结点r的左子树的中序遍历结果,inde ...
分类:
其他好文 时间:
2020-07-19 23:21:29
阅读次数:
70