二叉树本身是一种递归的数据类型,二叉树的许多操作离不开递归。非递归遍历包括结点入栈,先访问右子树,再访问根节点,访问左子树,先序和后序的非递归算法有待调试。 #include <stdio.h> #include<stdlib.h> #include<stdbool.h> typedef char ...
分类:
编程语言 时间:
2021-04-12 12:56:41
阅读次数:
0
二叉树——105. 从前序与中序遍历序列构造二叉树 题目: 思路: 这题就是考察两种遍历的特点,前序遍历的第一个为root结点,知道了root结点,就可以在中序遍历中知道在root结点之前的为左子树,在root结点之后的为右子树。然后就可以递归的构造出左子树和右子树。 具体实现的时候,就是要借助哈希 ...
分类:
其他好文 时间:
2021-04-12 12:33:14
阅读次数:
0
题目: 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。示例 2: 给定二叉树 [1,2 ...
分类:
其他好文 时间:
2021-04-12 12:06:54
阅读次数:
0
二叉树——144. 二叉树的前序遍历 题目: 思路: 前序遍历用递归,递归逻辑就是前序遍历的顺序:中左右,然后就行了。 代码: class Solution { public: void traversal(TreeNode* node, vector<int>& vec){ // 终止条件 if( ...
分类:
其他好文 时间:
2021-04-12 11:54:04
阅读次数:
0
平衡二叉树 题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 func ...
分类:
其他好文 时间:
2021-04-12 11:48:28
阅读次数:
0
根据题目意思,实际上我们计算出左右子树的高度相加后即为结果(实际还需-1) 1.深度优先遍历 时间O(n),空间O(h) class Solution { int max= 0; public int diameterOfBinaryTree(TreeNode root) { def(root); ...
分类:
其他好文 时间:
2021-04-12 11:46:11
阅读次数:
0
二叉树——236. 二叉树的最近公共祖先 题目: 思路: 后续遍历+DFS:具体思路参照了题解中的解析 代码: class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* ...
分类:
其他好文 时间:
2021-04-09 13:25:04
阅读次数:
0
用二叉查找树在磁盘上存储数据会面临两个问题: 1、二叉树只有两个分支,数据量非常大的时候,树的高度会很大,不利于数据的查找 2、每次仅若读取一条信息,会造成大量空间的浪费 因此需要把树的高度降低,并且尽量是的每次磁盘读取都能够得到最多的信息 为解决这两个问题,B树应运而生 B树是一种多路平衡树,或者 ...
分类:
其他好文 时间:
2021-04-09 13:24:46
阅读次数:
0
我的 CSDN 博客:blog.csdn.net/gdutxiaoxu我的掘金:juejin.im/user/220747…github: github.com/gdutxiaoxu/微信公众号:程序员徐公 前言 说到树的四种遍历方式,可能大家第一时间都会想到它的四种遍历方式,并快速说了它的特点。 ...
分类:
编程语言 时间:
2021-04-09 13:01:00
阅读次数:
0
二叉树——102. 二叉树的层序遍历 题目: 思路: 就是层序遍历,一层层扫下去,然后通过队列去实现,一个队列先暂存这一层的所有结点,然后另一个队列通过push_back的方式,实现从左到右的访问。 代码: class Solution { public: vector<vector<int>> l ...
分类:
其他好文 时间:
2021-04-08 12:59:26
阅读次数:
0