根据BST的前序遍历重建BST 1. 平均O(NlogN) 最坏O(N^2) class Solution { public: TreeNode* dfs(int l, int r, vector<int>& p) { if (l > r) return nullptr; TreeNode* nod ...
分类:
其他好文 时间:
2020-07-23 16:13:09
阅读次数:
67
图解 二叉树的四种遍历 LeetCode 题目中,二叉树的遍历方式是最基本,也是最重要的一类题目,我们将从「前序」、「中序」、「后序」、「层序」四种遍历方式出发,总结他们的递归和迭代解法。 题目说明 这里是 4 道相关题目: 144.二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序 ...
分类:
其他好文 时间:
2020-07-22 01:49:52
阅读次数:
113
题意:让我们根据提供的序列,找出另外一个序列 使当前序列满足非负整数中,前k个数中的未出现过的最小整数等于提供的序列中第K个数 思路:我们采用从后面遍历到前面的做法 首先可以确定的是,假如前后两个数字不相同,如 5 6 ,则在6的位置(也就是第二个位置)我们可以填上5,这是确定的 然后再用一个vis ...
分类:
其他好文 时间:
2020-07-21 22:18:57
阅读次数:
68
7. 重建二叉树 题意:面试题07. 重建二叉树 思路:前序遍历的顺序是“根-左-右”,中序遍历的顺序是“左-中-右”。 那么,对于整棵树前序遍历的结果,第一个值r一定是树的根结点。如果在中序遍历的结果中找到r的位置index,那么index左边的子数组就都是根结点r的左子树的中序遍历结果,inde ...
分类:
其他好文 时间:
2020-07-19 23:21:29
阅读次数:
70
1,个人理解前缀、中缀、后缀表达式应该对应着树的前序遍历、中序遍历和后序遍历。 2,中缀表达式更方便人类理解,后缀表达式因为其堆栈结构更方便计算机理解,这就像计算机组成原理中的补码和源码一样,补码更方便计算机计算,源码更方便人类看懂,也可以用二进制和十进制对比,为什么计算机整个框架建立在二进制的基础 ...
分类:
其他好文 时间:
2020-07-18 22:04:50
阅读次数:
83
还原二叉树 给前序、中序 function preMid(pre,mid){ if(pre.length == 0 || mid.length == 0){ return null } var root = pre[0] //前序第一个是根节点 //获取根节点在中序中的索引值 var rootMid ...
分类:
其他好文 时间:
2020-07-16 21:42:16
阅读次数:
74
/* // 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
前言 昨天和今天复习了二叉树的前序遍历、中序遍历和后序遍历,找到了一种统一的非递归的方法(即使用一个思路非递归实现二叉树的前序、中序和后序遍历)。 思路 思路本质上还是递归,只不过不通过递归函数显示地递归,而是通过栈模拟递归的过程。 具体思路:https://leetcode-cn.com/prob ...
分类:
其他好文 时间:
2020-07-13 15:41:18
阅读次数:
65
题目链接 https://leetcode-cn.com/problems/binary-tree-preorder-traversal/description/ 题解一:递归 // Problem: LeetCode 144 // URL: https://leetcode-cn.com/prob ...
分类:
其他好文 时间:
2020-07-13 00:00:50
阅读次数:
90
前序中序序列建立二叉树: //in[]和pre[]数组存放二叉树的中序和前序遍历序列 node* build(int preL,int preR,int inL,int inR){ if(preL>preR) return NULL; node* root=(node*)malloc(sizeof( ...
分类:
其他好文 时间:
2020-07-12 16:46:02
阅读次数:
85