二叉树的遍历 题型 此类题做法 1.定义节点 2.构造二叉树{ a.边界条件 b.建立新节点root 存入根节点数据(由后序或先序 c. k 遍历中序,找到相等的值 d. 得出左子树个数(中序的 ) e.返回左子树根节点地址,返回右子树根节点地址,return root; 3.层次遍历{ a.创建队 ...
分类:
其他好文 时间:
2020-07-21 14:18:40
阅读次数:
61
102-二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 题目分析 此题类似于《剑指offer》的第32题 层序遍历二叉树是指对二叉树每一层从左到右进行访问。 非叶子节点 对于每一层的非叶子节点,都有两个子节点。在层序遍历时,上一层非叶子 ...
分类:
其他好文 时间:
2020-07-17 16:15:17
阅读次数:
50
先中序遍历,对中序遍历得到的数组进行排序,将排序之后的数组与排序之前的数组比较,就可以找到是哪两个数进行了交换。 再中序遍历二叉树进行节点的值的交换,得到结果。 但是写得不够简洁,性能并不怎么样。 public void recoverTree(TreeNode root) { ArrayList< ...
分类:
其他好文 时间:
2020-07-01 12:55:45
阅读次数:
64
一、基本概念: 1、 列表:待搜索的数据集合。 2、 关键字:要查找的那个数据。 3、 查找:一种算法过程。 二、基于线性表的查找: 1、 顺序查找: (1)思想:逐个比较,直到找到或者查找失败。 (2)时间复杂度:T(n) = O(n)。 (3)空间复杂度:S(n) = O(n)。 2、 折半查找 ...
分类:
其他好文 时间:
2020-06-28 20:12:55
阅读次数:
42
1. 题目 给定一棵二叉树的头节点head,完成二叉树的先序、中序和后序遍历。要求时间复杂度为O(N),额外空间复杂度为O(1) 2. 思路 常规的遍历二叉树的思路是递归和非递归的解法,但是这两种解法都不能做到额外空间复杂度为O(1)。 首先来看普通的递归和非递归解法,导致它们空间复杂度高的原因是使 ...
分类:
其他好文 时间:
2020-06-25 23:51:14
阅读次数:
123
转自 https://blog.csdn.net/qq_45071375/article/details/103715587 这是我们用代码创建出来的二叉树图例 A / \ B C / \ \ D E F 友情提示: 在下面代码中出现的#字符代表子树为空,例如D结点下面左右子树都没有,就是两个#号; ...
书中第介绍了有根树,简单介绍了二叉树和分支数目无限制的有根树的存储结构,而没有关于二叉树的遍历过程。为此对二叉树做个简单的总结,介绍一下二叉树基本概念、性质、二叉树的存储结构和遍历过程,主要包括先根遍历、中根遍历、后根遍历和层次遍历。 1、二叉树的定义 二叉树(Binary Tree)是一种特殊的树 ...
分类:
其他好文 时间:
2020-06-22 18:38:21
阅读次数:
118
题目描述: 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] DFS:递归,从上到下遍历二叉树,每 ...
分类:
其他好文 时间:
2020-06-13 11:11:42
阅读次数:
45
非递归遍历二叉树借用List实现的,具体实现方法如下。前序遍历非递归代码实现:publicList<Integer>preOrder(TreeNoderoot){List<Integer>list=newArrayList<>();if(root==null){returnlist;}list.add(root.val);//根据前序遍历的特性,先将根节点的值加
分类:
其他好文 时间:
2020-06-09 09:17:36
阅读次数:
64
本章我们学习了树与二叉树,树对于我来说是一种新的概念,虽然它本身的结构比较简单,但是在认清一些概念的时候还是要费上一点功夫,我们学习到的有树的基本术语: 节点的度:节点的子树个数。 树的度:树的所有节点中最大的度数(树的度通常为节点个数的N-1)。 叶节点:度为0的节点(也称叶子节点)。 父节点:有 ...
分类:
其他好文 时间:
2020-05-30 22:11:45
阅读次数:
83