【LeetCode算法题-Implement Stack Using Queues】教程文章相关的互联网学习教程文章

leetcode 102. 二叉树的层序遍历【代码】【图】

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例:二叉树:[3,9,20,null,null,15,7],3 / \ 9 20 / \ 15 7返回其层序遍历结果: [ [3], [9,20], [15,7]] 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 public List<List<Integer...

LeetCode-二叉树的层次遍历【代码】【图】

LeetCode-二叉树的层次遍历 题目描述 给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。 如: 二叉树:[3,9,20,null,null,15,7] 返回其层序遍历结果: 思路 将树的各层节点放在数组里,再遍历数组获取子节点的值,最主要的是把各层的节点单独放在一个列表里存起来。(开始没考虑单独存一行的数据,出错了以后才重新修改) 代码实现 # Definition for a binary tree node. # class TreeN...

leetcode 226. 翻转二叉树【代码】【图】

翻转一棵二叉树。 示例: 输入:4 / \ 2 7 / \ / \1 3 6 9输出:4 / \ 7 2 / \ / \9 6 3 1 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/invert-binary-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路可以是当作书的层级遍历,就是每次遍历的时候,换一下左右节点。 public TreeNode invertTree(TreeNode root) {if (root == null) {return ...

【LeetCode-951】翻转等价二叉树【代码】【图】

问题 我们可以为二叉树 T 定义一个翻转操作,如下所示:选择任意节点,然后交换它的左子树和右子树。 只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转等价于二叉树 Y。 编写一个判断两个二叉树是否是翻转等价的函数。这些树由根节点 root1 和 root2 给出。 示例输入: root1 = [1,2,3,4,5,6,null,null,null,7,8], root2 = [1,3,2,null,6,4,5,null,null,null,null,8,7] 输出: true 解释: 我们翻转值为 1,3 ...

LeetCode:101. 对称二叉树【代码】

难度:简单 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [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 3C++:递归算法 思路:1、怎么判断一棵树对不对称?如果根节点只有一个,那自然是对称的。如果根节点下还有左右子树呢?怎么判断?2、怎么左右子树对不对称?从上面可以观察到,左子树的左孩子等于右子树的右孩子,左子树的右孩...

【LeetCode每日一题】二叉树搜索树节点最小距离【代码】【图】

二叉树搜索树节点最小距离 1、题目描述 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。实例1:输入:root = [4,2,6,1,3] 输出:1实例2:输入:root = [1,0,48,null,null,12,49] 输出:12、算法描述 思想:采用中序遍历的方式,每次遍历记住前一个数和后一个数,然后彼此相减,然后记住最小的值。 具体实现:1、定义一个全局的变量pre(用于记录上一个节点的值),再定义一个全局变量min(用于记录比...

leetcode-101对称二叉树【代码】【图】

题解 递归 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { public:vector<int>res;bool dfs(TreeN...

【leetcode】98:验证是否是二叉树【代码】

这个题目是一个十分经典的题目,需要我们验证一个二叉搜索树是否是有效的。如果这是一个有效的二叉搜索树,那么一定需要满足这样的条件: 每一棵subtree的所有left subtree都比root要小,每一棵right subtree都要比root要大,因此我们可以写出这样的代码:# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left ...

Medium | LeetCode 116. 填充每个节点的下一个右侧节点指针 | 二叉树层次遍历【代码】【图】

116. 填充每个节点的下一个右侧节点指针 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; }填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next 指针都被设置为 NULL。 进阶:你只能使用常量级额外空间。 使用递归解题也符合要求,本题...

leetcode 889. 根据前序和后序遍历构造二叉树【代码】

思路 之前已经写过了根据后序和中序遍历构造二叉树,同理,根据前序和中序遍历构造二叉树的题目也可以写了,所以我没再写一次思路。889这题和前面的思路本质上也没有差别,都是想方法把树分成根,左子树和右子树,再分别递归。 代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ clas...

菜鸡刷leetcode 剑指 Offer 55 - I. 二叉树的深度【代码】

# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = Noneclass Solution:def maxDepth(self, root: TreeNode) -> int:if root == None:return 0return max(1,self.maxDepth(root.left)+1,self.maxDepth(root.right)+1) 用递归就几行就vans。也是很绝。 这个要记住: 1.树的深度 = max(左子树深度+1,右子树深度+1)...

Leetcode每日一题-331.验证二叉树的前序序列化【代码】【图】

331. 验证二叉树的前序序列化 题目地址 描述序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。例如,上面的二叉树可以被序列化为字符串 “9,3,4,#,#,1,#,#,2,#,6,#,#”,其中 # 代表一个空节点。 给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。 每个以逗号分隔...

LeetCode 145. 二叉树的后序遍历【代码】

145. 二叉树的后序遍历 Difficulty: 中等 给定一个二叉树,返回它的 _后序 _遍历。 示例: 输入: [1,null,2,3] 12/3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗? Solution 迭代 # Definition for a binary tree node. # class TreeNode: # ? ? def __init__(self, val=0, left=None, right=None): # ? ? ? ? self.val = val # ? ? ? ? self.left = left # ? ? ? ? self.right = right class Solution:? ?def p...

leetcode——对链表进行插入排序【代码】

思路: 1.如果链表为空,则返回其本身; 2.如果链表不为空,初始化排序表最后指针lastsorted为head,当前需排序的指针curr为head->next; 3.为了方便将元素插入到head之前,设立Head_front指针,值设为0,指向head; 4.初始化完成后,对排好序的表利用指针prev进行遍历查找,找到适合插入的位置;ListNode *prev = Head_front;while (prev->next->val <= curr->val)prev = prev->next;5.将需排序元素curr原地删除,插入新的位置中;...

LeetCode 870. 优势洗牌(贪心,二分)【代码】【图】

题目思路 这道题的解题思路主要为贪心,其思想和田忌赛马类似。题目要求对于同一个索引位置,A[i]>B[i]的索引数目。为了让“资源”利用率最大化,对于B位置某个索引处的元素,对应调出的A数组中的元素应该是刚刚好大于它,也就是A数组中大于该元素的第一个数。如果不存在这样的数(或者有合适的数但之前已被占用)则将当前A数组中可用的最小值分给它,减少资源的损失。为了更快查找到该元素,需要先对A数组进行排序。之后遍历B数...