问题: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 分析:二叉搜索树的中序遍历将得到升序结果。 (1)使用List结构记录中序遍历结果. (2)将list中的元素构建为双向链表。 code: public TreeNode Co ...
分类:
其他好文 时间:
2020-05-16 15:10:55
阅读次数:
62
题目: 二叉搜索树迭代器:实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 思路: 二叉搜索树使用中序,然后弹出栈底。 程序: # Definition for a binary tree node. # class Tre ...
分类:
编程语言 时间:
2020-05-16 10:55:17
阅读次数:
70
https://leetcode-cn.com/problems/successor-lcci/ 这个题不是特别难,就是比较绕,按照中序遍历的当前节点的下一个结点分为两种 1.当前节点有右孩子,这种比较简单,直接找到右孩子的最左边的孩子就可以。 2.当前节点没有右孩子,要找到当前节点是父节点的左孩子 ...
分类:
其他好文 时间:
2020-05-14 22:41:44
阅读次数:
77
递归实现结构很好记,上来写两递归,递归左子树,递归右子树。 前序遍历,访问节点(打印节点)在两个递归前面——中、左、右; 中序遍历,访问放递归中间——左中右; 后序遍历,先两递归,最后才访问——左、中、右。 1)先序遍历void preorder(BiTree T){ if (T != NULL) ...
分类:
其他好文 时间:
2020-05-14 15:51:55
阅读次数:
66
百度大数据实习生:(百度科技园一号楼) 2018-3-31 笔试: 1.双指针的题 2.找出字符串中第一个出现两次的字母 3.通过前中序求二叉树 4.快速排序,堆排序 5.数据库的左右连接 面试: 1.MapReduce分几步,shuffle原理 2.hive 的知识 3.数据库,数据仓库 4.代码 ...
分类:
其他好文 时间:
2020-05-14 01:50:12
阅读次数:
77
恢复内容开始 #include<iostream> #include<stack> #include<queue> using namespace std; int maxsize=101; typedef struct BTNode{ int data; int lTag;//lTag=0左孩子; ...
分类:
其他好文 时间:
2020-05-13 20:08:03
阅读次数:
52
1 package com.itheima.demo04.ObjectStream; 2 3 import java.io.*; 4 import java.util.ArrayList; 5 6 /* 7 练习:序列化集合 8 当我们想在文件中保存多个对象的时候 9 可以把多个对象存储到一个集合中 ...
分类:
其他好文 时间:
2020-05-13 20:03:14
阅读次数:
59
1. B+树的数据都集中在叶子节点。分支节点只负责索引。B树的分支节点也有数据。B+树的层高会小于B树,平均的Io次数会远小于B树 2. B+树更擅长范围查询。存储在叶子节点中的数据是按顺序放置的双向链表。而B树范围查询只能中序遍历。 3. 索引节点没有数据。比较小。b树可以把索引完全加载至内存中。 ...
分类:
数据库 时间:
2020-05-13 09:38:12
阅读次数:
109
题目: 二叉搜索树中第K小的元素:给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 思路: 二叉搜索树具有良好的性质,一个节点左边的数小于该节点,右边的数大于该节点,因此想到了使用中序 ...
分类:
编程语言 时间:
2020-05-12 13:31:50
阅读次数:
68
二叉排序树 插入,删除和查找的效率都比较高(创建时与二叉树相同) 二叉排序树又称为二叉排序树,若不为空树,则有以下性质: 若左子树不为空,则左子树上所有结点值均小于根节点的值 若右子树不为空,则右子树上所有结点值均小于根节点的值 他的左右子树也是二叉树排序树(递归) 查找:二叉树的中序遍历(从小到大 ...
分类:
编程语言 时间:
2020-05-11 23:36:00
阅读次数:
80