leetcode——深度优先搜索
akun+
~
展开
-
深度优先搜索——二叉树的最小深度
一、深度优先与 求最大深度不同:不能当递归此结点时,若为空则返回0,要提前判断是否为空,为空则不进入递归。因为0肯定是最小深度,但其实这一部分为空,不能算作最小深度。比如这个例子,只有右子树,如果按为空则返回0,那最小深度为1,但其实不然。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode r...原创 2021-08-26 20:22:57 · 207 阅读 · 0 评论 -
深度优先搜索——平衡二叉树
一、自顶向下的递归判断每个结点本身是不是平衡二叉树,再判断他的左右子树是不是平衡树缺点:重复算很多次高度Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val ...原创 2021-08-26 19:34:56 · 92 阅读 · 0 评论 -
深度优先搜索——二叉树的层序遍历II
翻转 正序的结果即可Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left..原创 2021-08-26 16:23:20 · 123 阅读 · 0 评论 -
深度优先搜索——二叉树的层序遍历
注意:要按层次,分别放在一个表格里 再一起返回Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, ..原创 2021-08-26 16:18:54 · 158 阅读 · 0 评论 -
深度优先搜索——二叉树的最大深度
一、深度优先搜索Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, ..原创 2021-08-26 10:45:40 · 161 阅读 · 0 评论 -
深度优先搜索——对称二叉树
与 ”相同二叉树“ 类似一、深度优先/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode l..原创 2021-08-26 10:07:06 · 70 阅读 · 0 评论 -
深度优先搜索——相同的树
一、深度优先搜索,递归Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode lef..原创 2021-08-26 09:50:57 · 145 阅读 · 0 评论 -
深度优先搜索——恢复二叉搜索树
注意:错位的两个不一定是紧挨着的,所以要交换的是最早的错位一个 和 最晚的错位的一个,即要遍历完所有的结点,找到这两个错位的结点。用到中序遍历栈:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int va...原创 2021-08-25 20:33:08 · 111 阅读 · 0 评论 -
深度优先搜索——验证二叉搜索树
一、递归法二、中序遍历,保留前一个结点的值/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, T..原创 2021-08-25 16:26:17 · 88 阅读 · 0 评论 -
深度优先搜索——二叉树的中序遍历
递归(略)栈:Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left,..原创 2021-08-25 11:05:02 · 172 阅读 · 0 评论