二叉树
promise_yaner
这个作者很懒,什么都没留下…
展开
-
【剑指Offer】36. 二叉搜索树与双向链表
题目链接:二叉搜索树与双向链表题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中的第一个节点的指针。题目要求:1)排序原创 2022-04-20 16:11:50 · 393 阅读 · 0 评论 -
【剑指 Offer】 26. 树的子结构
题目链接:树的子结构题目描述:输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:3/ \4 5/ \1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。分析:此题目需要对树A中的每一个节点进行遍历,直到找到和树B相同的结构。1)递归对A进行先序遍历:先判断A...原创 2022-03-24 22:29:46 · 78 阅读 · 0 评论 -
【面试题】返回数组中的每一个元素在其前面元素的排序中的索引
题目描述:对于每一个元素,从第一个元素到该元素为止的若干个元素,进行升序排序,得到该元素在排序中的下标。 即对于每一个元素,得出其前面有几个比它小的元素。方法一:O(n^2)将前面的每一个元素和当前元素进行比较,统计有几个比它小的元素。// O(n^2)function numIndex(nums) { const length = nums.length; const res = []; res.push(0); let time = 0;原创 2022-03-06 17:04:56 · 483 阅读 · 0 评论 -
【Leetcode】637. 二叉树的层平均值
题目链接:二叉树的层平均值题目描述:给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。分析:求每一层的平均值,和求二叉树的右视图思路是类似的。使用广度优先搜索,进行层序遍历,求每一层节点值的和除以该层的节点数,记录下来其平均值。js代码如下:// 使用BFS广度优先搜索 var averageOfLevels = function(root) { if (root == null) ret原创 2022-02-25 16:21:19 · 258 阅读 · 0 评论 -
【Leetcode】199. 二叉树的右视图
题目链接:二叉树的右视图题目描述:给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。分析:右视图就是看到的每一层最右侧的一个节点。那么可以使用广度优先搜索,对二叉树进行层序遍历,记录下来每一层最右侧的节点,得到的数组即为所求。js代码如下:// BFS广度优先搜索,只记录每一层的最后一个元素var rightSideView = function (root) { if (root == null)原创 2022-02-25 15:58:14 · 296 阅读 · 0 评论 -
【LeetCode】108. 将有序数组转换为二叉搜索树
好久没刷题了,被封到宿舍近三周时间,因为状态不好一直没刷,今天第一天来实验室,先做一个简单题找一下感觉 。题目描述:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。分析:一个二叉搜索树的中序遍历序列是一个升序序列。所有这里使用中序遍历的思想。又因为要求高度平衡,所以每次都从序列中间分割为左右两部分。需要用到递归。js代码如下:// 中序遍原创 2022-01-17 15:41:08 · 259 阅读 · 0 评论 -
【Leetcode】打家劫舍
题目链接:198. House Robber 213. House Robber II 337. House Robber III1、打家劫舍I相邻两家不能同时打劫,dp[i]表示打劫到第i家能够盗取到的最高金额。用动态规划,状态转移方程为:dp[i]=max(dp[i-2]+nums[i],dp[i-1])因为求dp[i]只需用到前面两个数dp[i-1],dp[i-2],所以可以不用数组,直接用两个变量表示即可。代码如下:var rob = function (nums...原创 2021-12-22 21:48:10 · 676 阅读 · 0 评论 -
【LeetCode】98. Validate Binary Search Tree
题目链接:LeetCode 98验证二叉搜索树:首先理清楚二叉搜索树的特点和性质:1、节点左子树上的值都比节点的值小,节点右子树上的值都比节点的值大。2、二叉搜索树的中序遍历得到一个递增序列,即一个节点的值一定比中序遍历中其前面节点的值大。由此可以有两种解题思路:1)递归节点左子树值的上限是节点的值,节点右子树值的下限是节点的值。节点左子树的右子树,节点右子树的左子树都有上下限,,,代码如下: public static boolean isValidBST(TreeNode root)原创 2021-11-12 17:24:05 · 250 阅读 · 0 评论