404 Sum of Left Leaves 请看题 Example 解析这一道题要求我们去计算左孩子的sum,怎么去计算呢? 想一想,判断左孩子要什么条件呢? 根据Example中我们可以看见,左孩子的下节点为空,那么根据if我们就可以写出如果当前节点不为空并且左孩子的左右节点为空那么就可以获取到值,然后计算 Code123456789101112131415161718192021222324252627282930313233343 2024-05-25 LeetCode #LeetCode
108. Convert Sorted Array to Binary Search Tree 请看题 Example 解析这一道题要求我们进行一个插入操作,插入树的要求为avl树,也就是平衡因子绝对值不能大于1 给定一个排序过后的数组,使用数组来进行插入操作。 最开始的思路最开始,我想到是我前不久写过的一道题 isBalaced 因为这道题要求我们插入的规则是必须遵守平衡,而isBalanced这道题正好解决了问题,我只需要进行判断,然后插入。 但是真正开始写的时候发现问题了,太太繁琐 2024-05-23 LeetCode #LeetCode
LeetCode 111. Minimum Depth of Binary Tree 请看题 Example 思路从Leetcode给我们的例子中可以看出来,我们需要获取到节点深度为最低的那个值,在第一个例子中,最低节点深度为2,从3到9 在第二个例子中,最低节点深度为5,因为它只有右孩子而没有左孩子。 那么问题来了,怎么去获取这个节点最低深度呢? 首先,先把当传入的节点为空条件写出来 !root 返回0;这是因为会有一个测试条件来传入空树。然后我们就可以开始写另外一个函数来获 2024-05-22 LeetCode #LeetCode
Leetcode 100 Same Tree 请看题 Example 思路从Leetcode给我们的例子中可以看出来,两颗树是一样的当元素的位置和元素内容都是等于才是一样的树。那么在这里思考思考一下逻辑,反向来推导结论 首先必要的就是递归了,给的参数是两棵树,那么递归的必要条件就是每一次调用的时候都传入这两棵树的左右节点,这里的左右节点条件为and,不是or。需注意 那么如果两棵树同时为空说明是一样的,这时候返回true 按照这个道理可以 2024-05-21 LeetCode #LeetCode
Leetcode 101 Symmetric tree 请看题 Example 思路从Leetcode给我们的例子中可以看出来,两颗树是对称的是当元素的位置和元素内容都是对称的,如果有任意一颗树含有多余节点那么就不是对称的 还是递归,从leetcode模板中可以知道传入的是一颗完整的树,而我们需要去进行判断,怎么判断呢? 新建函数传入左右节点我们可以新建一个函数用来接收左节点的和右节点的内容,如果 有任意节点的元素不一样那就不是对称的 一个为空一 2024-05-21 LeetCode #LeetCode
94. Binary Tree Inorder Traversal 请看题 Example 思路这道题太简单了,直接上代码了 Code123456789101112131415161718192021222324252627282930/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNod 2024-05-15 LeetCode #LeetCode
LeetCode 965. Univalued Binary Tree 请看题 Example 思路还是熟悉的二叉树结构,我们还是可以继续用递归来解决 这道题就是来判断当前树是否都是同样的值对于判断是否相等我们可以传入一个初始值,这个初始值为一个不变的值,如果在比较中有一处不同,那么这个树的答案为false,反之true 直接上代码了 Code123456789101112131415161718192021222324252627282930/** * Defin 2024-05-12 LeetCode #LeetCode
LeetCode 563 Binary Tree Tilt 请看题 Example 思路还是熟悉的二叉树结构,我们还是可以继续用递归来解决 首先要判断的几个点是如果左节点或者右节点为空那么Tilt为0,如果不为空那么使用递归来进行获取到节点的值。每个节点的值都要进行 abs(left - right) 操作,题目要求的。 首先要获取到左节点的孩子们所有的值,然后获取右节点孩子们的所有值,再然后进行获取Tilt,有点绕脑,但是递归能够很好的为我们解决这个问题 2024-05-11 LeetCode #LeetCode
LeetCode 257 Binary Tree Paths 请看题 给一个二叉树结构的节点,要求输出内容为 要求返回值为一个vector。 开始做题先来看第二个Example。 一个树中只有一个节点,那么我们可以进行if判断来返回其节点,代码可为 1234if(!node->left && !node->right) { ans.push_back(path); } 想要理解代码, 2024-05-09 LeetCode #LeetCode
LeetCode 226 invert binary tree 请看题 还是熟悉的二叉树,还是熟悉的递归。 思路首先是第三种情况,咱们直接解决掉好了。当目前节点为空的情况下直接返回,代码可以这么写 1234if(root == nullptr){ return root;} 第三种情况就这样解决了,接下来看另外两种情况。 首先一开始我的思路是通过遍历或者递归来获取所有的节点然后重新插入,按照左大右小的方式,但是后来我发现这样子也太麻 2024-05-05 LeetCode #LeetCode