随笔分类 - leetcode_二叉树
摘要:100. 相同的树 题目链接: 100. 相同的树(简单) 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p = [1,2,3], q = [1,2,3]输出:true 示例 2: 输
阅读全文
摘要:257. 二叉树的所有路径 题目链接:257. 二叉树的所有路径(简单) 题目描述 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [1,2,3,null,5]输出:["1->2->5","1-
阅读全文
摘要:222. 完全二叉树的节点个数 题目链接:222. 完全二叉树的节点个数(中等) 题目描述 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位
阅读全文
摘要:111. 二叉树的最小深度 题目链接: 111. 二叉树的最小深度(简单) 题解 思路:该题看似与104. 二叉树的最大深度(递归法) 差不多,但其实相差得还是有点多。在解该题的时候对于“确认单层递归的逻辑”上,我先是将104. 二叉树的最大深度(递归法) 中对应的代码改成了: int leftDe
阅读全文
摘要:559. N 叉树的最大深度 题目链接:559. N 叉树的最大深度 题解 思路:该题的解法与104. 二叉树的最大深度(层次遍历—使用队列迭代)以及104. 二叉树的最大深度(递归法) 一样。 代码(C++): //递归法 //后序遍历 class Solution1 { public: int
阅读全文
摘要:104. 二叉树的最大深度(递归法) 题目链接:104. 二叉树的最大深度(简单) 题解 思路:该题可以使用前序遍历或者后序遍历,使用前序求的是深度,后序遍历求的是高度。而根节点的高度就是深度。 代码(C++): //递归(1.确定递归函数的参数和返回值;2.确定终止条件;3.确定单层递归的逻辑)
阅读全文
摘要:N叉树的前序遍历和后续遍历 题目链接: 589. N 叉树的前序遍历(简单) 590. N 叉树的后序遍历(简单) 题解 思路:可以用“二叉树的统一迭代遍历 ”解决 代码(C++): //N叉树的前序遍历(迭代法)(中左右——右左中null) class Solution { public: vec
阅读全文
摘要:101. 对称二叉树 题目链接: 101. 对称二叉树(简单) 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 /
阅读全文
摘要:226. 翻转二叉树 题目链接:226. 翻转二叉树(简单) 题目描述 翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \1 3 6 9 输出: 4 / \ 7 2 / \ / \9 6 3 1 题解 思路:遍历每一个节点,如果该节点的左孩子和右孩子中的一个或两个不为空,则交换位置
阅读全文
摘要:111. 二叉树的最小深度 题目链接: 111. 二叉树的最小深度(简单) 题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7]输出:
阅读全文
摘要:104. 二叉树的最大深度 题目链接:104. 二叉树的最大深度(简单) 题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9
阅读全文
摘要:116. 填充每个节点的下一个右侧节点指针 题目链接: 116. 填充每个节点的下一个右侧节点指针(中等) 题目描述 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *rig
阅读全文
摘要:515. 在每个树行中找最大值 题目链接: 515. 在每个树行中找最大值(中等) 题目描述 给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。 示例1: 输入: root = [1,3,2,5,3,null,9]输出: [1,3,9]解释: 1 / \ 3 2 / \ \ 5 3
阅读全文
摘要:429. N 叉树的层序遍历 题目链接:429. N 叉树的层序遍历 题目描述 给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。 示例 1: 输入:root = [1,null,3,2,4,null,5
阅读全文
摘要:637. 二叉树的层平均值 题目链接:637. 二叉树的层平均值(简单) 题目描述 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 示例 1: 输入: 3 / \ 9 20 / \ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层
阅读全文
摘要:199. 二叉树的右视图 题目链接:199. 二叉树的右视图(中等) 题目描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4]输出: [1,3,4] 示例 2: 输入: [
阅读全文
摘要:107. 二叉树的层序遍历 II 题目链接:107. 二叉树的层序遍历 II(中等) 题目描述 给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 /
阅读全文
摘要:102.二叉树的层序遍历 题目链接:102.二叉树的层序遍历(中等) 题目描述 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层序遍历结果:
阅读全文
摘要:二叉树的统一迭代遍历 题目链接 144.二叉树的前序遍历(简单) 94.二叉树的中序遍历(简单) 145.二叉树的后序遍历(简单) 题解 思路:以中序遍历为例,在二叉树的迭代遍历中提到说使用栈的话,无法同时解决访问节点(遍历节点)和处理节点(将元素放进结果集)不一致的情况。 现在将访问的节点放入栈中
阅读全文
摘要:二叉树的迭代遍历 题目链接 144.二叉树的前序遍历(简单) 94.二叉树的中序遍历(简单) 145.二叉树的后序遍历(简单) 题解 用迭代法(非递归的方式)来实现二叉树的前中后序遍历。 递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候,从栈顶弹
阅读全文

浙公网安备 33010602011771号