这几天面试老是遇到二叉树遍历问题,之前没怎么吃透,这次尝试好好啃一下,在这记录下这次学习的过程 二叉树的定义 首先我们先来看二叉树的口述定义 二叉树是树的叶子节点的数量不大于2的树 我们就随便再看看树的口述定义 ? 树是 N (N >= 0 )个结点的有限集合,N = 0 时,称为空树,这是一种特殊 ...
分类:
编程语言 时间:
2021-01-12 10:42:55
阅读次数:
0
前几天学习容器map时,看到说明,说map是采用红黑树实现的,于是就查了红黑树,不查不知道,一查一大跳,原来这玩意那么重要。然而我本科好像没学过,也可能老师讲过只是我没听。于是出于好奇就学了一下。下文详细介绍自己的学习过程与学习所得。红黑树遍历过程如下。1.红黑树的相关概念Red-BlackTree称为“红黑树”,是一种自平衡二叉查找树,红黑树和AVL树类似,在进行插入和删除时需要通过旋转和重新着
分类:
其他好文 时间:
2021-01-02 11:36:34
阅读次数:
0
1. 深度优先遍历 使用场景:常见于各种组合,树遍历,前序遍历、中序遍历、后续遍历 private void dfs(int[] arr, int target,int begin, Deque<Integer> path, Set<List<Integer>> res) { if ( path.s ...
分类:
编程语言 时间:
2020-10-26 10:56:27
阅读次数:
26
/* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public No ...
分类:
其他好文 时间:
2020-07-15 23:57:38
阅读次数:
89
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ ...
分类:
其他好文 时间:
2020-07-15 23:40:01
阅读次数:
70
输出二叉树中的叶子结点 void PreOrderPrintLeaves( BinTree BT ) { if( BT ) { if ( !BT-Left && !BT->Right )// 在二叉树的遍历算法中增加检测结点的“左右子树是否都为空”。 printf(“%d”, BT->Data ); ...
分类:
其他好文 时间:
2020-07-15 15:28:16
阅读次数:
72
(熟练!重要!)二叉搜索树 BST ##题目大意 判断给定序列是否是一个BST或镜像BST树的先序遍历序列,如果是则输出该树的后序遍历序列。 ##思路 根据给定序列创建BST树,求出它的先序遍历和镜像树的先序遍历(即原树遍历时按照根->右->左),与原序列比较。 ##AC代码 #define _CR ...
分类:
其他好文 时间:
2020-07-14 11:52:38
阅读次数:
62
直接上图 主要就是要记住 二分查找,主要用于在有序的数组里面查找对应的元素,时间复杂度为 O(nlogn) 二叉树遍历,时间复杂度为 O(n) 有序的二维矩阵查找,时间复杂度为 O(n) 归并排序,时间复杂度为 O(nlogn) ...
分类:
编程语言 时间:
2020-07-11 23:00:49
阅读次数:
80
前序遍历的非递归实现 中序遍历的非递归实现 1 void InOrder2(BTNode *root) { 2 BTNode *p = root; 3 stack<BTNode *> S; 4 while (p != NULL || !S.empty()) { 5 if (p) { // 找到树中最 ...
分类:
编程语言 时间:
2020-07-11 19:21:14
阅读次数:
59
一、思维导图: 二、需要留意的点 链式结构可以进行二分查找,但是不能在对数时间内完成,因为要对数字下标进行随机访问,实际都得遍历一遍,需要O(n) 二分查找应用场景的局限性: (1)基于顺序表的存储结构; (2)针对有序数据; (3)数据量小且比较操作不耗时时 (4)数据量不能太大(需要连续的内存空 ...
分类:
其他好文 时间:
2020-06-27 20:12:59
阅读次数:
66