树
以勒先生
一个自发简简单单学习的汉子
展开
-
783. 二叉搜索树节点最小距离
给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。 思路 面对BST ,我们知道其中序遍历是按照升序进行输出,而这个题是找任意两节点差的最小值,那肯定就是一个排序的数组两两之间进行比较,找最小值。 面对树的问题一般都会进行递归遍历,需要考虑是这个树要进行前序遍历、中序遍历还是后序遍历。 这个题肯定是中序了,因为我们需要一个排序的数组,然后这个时候就是要么整一个list把这些个点都存进去然后两两比较,要么就是设置一个前驱节点,把每一次前面的节点保存下来,然后做运算,再把当前值赋值给前驱节原创 2020-06-23 09:17:45 · 112 阅读 · 0 评论 -
700二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如, 思路:重点是BST,也就是说是有序的,左小右大,现在要找到那个值,就是不断的递归找,对于每个节点分四个情况,为空返回null,小了往左边找,大了往右边找,相等直接返回。 只是这里有一个是特意说的就是因为只有一次返回,所以每个return都应该是对等的关系,也就是说每一次的判断都是return的返回 public TreeNode searchBST原创 2020-06-22 09:44:58 · 87 阅读 · 0 评论 -
以勒先生刷力扣之:107. 二叉树的层次遍历 II
107. 二叉树的层次遍历 II 题目 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 这个题和我上一篇的102. 二叉树的层序遍历(一)是异曲同工的,建议先去看我的上一篇,解释详细 这个题仍然是可以用两种方法来的,但是返回的时候要求是从底部往上面返回,那么就说明在添加list的时候要倒着添加,list有一个add方法是先写索引,再写上插入的元素。所以这就是和上面那个题的区别,建议先看上一篇的解释,再看接下来的代码,比较不同之处。 BFS pu原创 2020-05-10 15:01:33 · 124 阅读 · 0 评论 -
以勒先生刷力扣之:102. 二叉树的层序遍历(一)
102. 二叉树的层序遍历(一) 注意:这里是一哦,也就是说后面还有二~~~ 题目 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 思路 这个题吧,一看是一层一层的输出,你肯定会第一个想到的是bfs,反正我觉得这个题用bfs的方法是容易理解的。 那么按着bfs的老套路来建立一个队列,将根节点放进去,随后就是无脑的while队列不为null,按着常理这里是要弹出了对不对,但是!这里不能直接弹出,你直接弹出还玩个锤子,人家让把每一层的元素加入一个list中,那我的原创 2020-05-10 14:55:02 · 115 阅读 · 0 评论 -
以勒先生之力扣:104. 二叉树的最大深度
104. 二叉树的最大深度 问题 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 思路 这个题的思路一看就是递归一下,每次加1,最后返回的就是深度,而且他说是要求最大深度,那就是左子树和右子的最大深度加一。 所以就是判断,若是null则返回0,否则return 左子树和右子树中最大的+1;递归的强大。bfs其实也行,没有dfs 这么秀,所以就不说了,简单的知道就好了,哈哈。 public int maxDepth(Tree原创 2020-05-10 13:58:52 · 119 阅读 · 0 评论 -
以勒先生之力扣:101. 对称二叉树
101 对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的。 思路 这个题就和上面那个题是类似到极致的,所谓镜像,不过就是判断在某个位置是否相同罢了,比如左子树的左子节点与右子树的右子节点是否相同,左子树的右子节点与右子树的左子节点是否相同。 那么看过上篇文章的就知道,碰到判断相同一般就是bfs或者dfs。 DFS 思路其实还是和上一篇的一样,创建一个函数,传入的参数分别是两个节点p和q,随后判断这俩节点是否为null,若null则相等,然后是一个为null,那就是false,随后即使在都不为nul原创 2020-05-10 13:37:00 · 147 阅读 · 0 评论 -
以勒先生之力扣:100相同的树
100 相同的树 题目 给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 在这里插入图片描述 思路 既然是编写两棵树是否相同,那么也就是判断这两个树的每一个相同位置的节点是不是相同,那么第一个思路的要么是采用dfs或者bfs,其实一般情况下对于树的相同问题,这俩都行。 DFS 先用dfs的话,两颗树遍历的方式肯定都是一样的,那么就是需要在遍历的时候做判断,判断到这个节点的时候,首先这俩节点是不是都为null,都为null的话肯定是true原创 2020-05-10 13:18:06 · 110 阅读 · 0 评论