一、何为二叉排序树 二叉排序树可能是空树,或者是存在以下特征的二叉树: + 若该树左子树不为空,则左子树上所有记录的关键字均小于根结点所记录的值。 + 若该树右子树不为空,则右子树上所有记录的关键字均小于根结点所记录的值。 + 这棵树的左右子树,本身也属于二叉排序树,即左右子树都存在以上两点特征。 ...
分类:
编程语言 时间:
2020-04-19 17:32:16
阅读次数:
72
题目要求 有两个不同大小的二叉树: T1有上百万的节点; T2有好几百的节点。请设计一种算法,判定T2是否为T1的子树。 思路解析 若根节点相同,则直接返回true。 若根节点不同,则递归比较T1的左、右子树和T2。 要注意的点 isEqual()函数的实现。 对于T1、T2是空值情况的具体判断。 ...
分类:
其他好文 时间:
2020-04-17 23:50:30
阅读次数:
87
解题思路:先判断当前节点是否为空,不为空则加入路径中,若不为空,判断该节点是否为叶子节点,为叶子节点则将路径加入答案,否则继续递归左右子树.给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。示例:输入:1/\23\5输出:["1->2->5","1->3"]解释:所有根节点到叶子节点的路径为:1->
分类:
编程语言 时间:
2020-04-15 10:43:44
阅读次数:
88
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路: 判断二叉树是否对称。首先判断该二叉树是否为空,若不为空,根节点及其左右子树,判断左 ...
分类:
其他好文 时间:
2020-04-12 18:41:09
阅读次数:
61
[TOC] 16.反转链表 输入一个链表,反转链表后,输出新链表的表头。 从前往后,依次将当前节点的next指向前结点。用多个变量存储当前节点,下一节点,前结点。 17.合并两个排序的链表 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 基本:遍历两链表 ...
分类:
其他好文 时间:
2020-04-12 13:59:01
阅读次数:
59
要求 给定一棵二叉树,返回所有表示从根节点到叶子节点路径的字符串 思路 递归地返回左右子树到叶子节点的字符串 示例 1 class Solution { 2 public: 3 vector<string> binaryTreePaths(TreeNode* root) { 4 5 vector<s ...
分类:
其他好文 时间:
2020-04-12 10:44:25
阅读次数:
60
AVL树说明: 该树是一种高度平衡的二叉搜索树,该树中的每一个结点左右子树的高度至多相差1。 AVL树本身也是一个二叉搜索树。 斐波那契数列: 1、1、2、3、5、8、13、21、34、…… 其递推式定义为:F(1) = 1, F(2) = 1, F(n) = F(n-1) + F(n-2) (n> ...
分类:
其他好文 时间:
2020-04-11 23:57:28
阅读次数:
123
解题思路:先计算左右子树的高度,如果满足平衡二叉树左右子树的高度差的绝对值不超过1,则返回该树的高度,否则返回-1表示子树已经不平衡了.给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例1:给定二叉树[3,9,20,null,null,15,7]3/\920/\157返回true。classSolution
分类:
其他好文 时间:
2020-04-11 22:20:22
阅读次数:
101
平衡二叉搜索树 二叉搜索树的问题: 添加:若从小到大添加元素,那么二叉搜索树将退化成链表 删除:删除节点时也可能会导致二叉搜索树退化成链表 平衡(Banlance) 平衡:当节点数量固定时,左右子树的高度越接近,这棵二叉树就越平衡(高度越低) 最理想的状态就是像完全二叉树、满二叉树那样,高度是最小的 ...
分类:
其他好文 时间:
2020-04-11 00:32:57
阅读次数:
70
给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 解:这道题乍一看,想法是用栈,对根节点 ...
分类:
其他好文 时间:
2020-04-10 00:21:25
阅读次数:
54