![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Tree
dongcl97
这个作者很懒,什么都没留下…
展开
-
LeetCode 98. Validate Binary Search Tree C++
Problem 题目链接 Solution 给定一个二叉树,判定这棵二叉树是不是二叉搜索树。题目规定左子树的值需要严格小于根节点,右子树的值需要严格大于根节点。 我的方法用到了一个二叉搜索树的性质,那就是,二叉搜索树的中序遍历结果一定是非降序的,反之亦然! 那么我们只需要判断该树的中序遍历结果是不是单调的就可以判断原树是不是一棵二叉搜索树了。 /** * Definition for a bin...原创 2020-04-22 09:55:56 · 115 阅读 · 0 评论 -
LeetCode 235. Lowest Common Ancestor of a Binary Search Tree C++
Problem 题目链接 Solution 题意为给定一个BST(二叉搜索树)和两个树中的节点p、q,要求你找出p、q节点的最低公共祖先节点。 最低公共祖先节点定义为树中同时有p、q两个后代节点的最低节点,同时,一个节点也可以作为其自身的祖先节点。 题目还规定了1、树中节点所有值不同2、p和q是不同的两个节点且必定存在于树中 有了这两点规定,就不用考虑很多的边界情况了,处理还是比较方便的。基于BS...原创 2020-04-21 22:43:06 · 109 阅读 · 0 评论 -
LeetCode 110. Balanced Binary Tree C++
Problem 题目链接 Solution 题意为,给定一棵二叉树,让你判定这棵二叉树是否是平衡二叉树(树种每个节点的左右子树高度差不超过1)。 这里复习一下树的高度的知识点,树的高度是指某一节点到叶子节点最长简单路径边的条数,因此叶子节点的高度为0。 那么我们就可以递归的来计算所有子树的高度,若在某节点不符合平衡二叉树的定义,则直接返回-1。 /** * Definition for a bi...原创 2020-04-20 08:49:48 · 78 阅读 · 0 评论 -
LeetCode 226. Invert Binary Tree
Problem 题目链接 Solution 题意是给定一棵二叉树,需要你把左右子树交换次序。 那么我们自顶向下,用递归的方式把左右子树交换就行了。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; ...原创 2020-04-14 15:48:27 · 75 阅读 · 0 评论 -
LeetCode 257. Binary Tree Paths
Problem 题目链接 Solution 此题题意为,给定一棵二叉树,要求你找出所有根到叶节点的路径,题目也没有对访问次序做要求。 那么我们只要简单地对整棵树做DFS就行了。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tr...原创 2020-04-14 15:11:41 · 62 阅读 · 0 评论 -
LeetCode 101. Symmetric Tree
Problem 题目链接 Solution 给定一棵二叉树,判定其是否是镜像对称的,即交换左右子树后是否和原树相同。 设根节点对应的左右子树为L,R,解法就是比较L与R是否对称,要对称的条件就是L、R根节点的val相同并且L的左子树与R的右子树对称并且L的右子树与R的左子树对称。 可以用迭代、递归两种方法实现。 递归版本: /** * Definition for a binary tree n...原创 2020-04-12 09:51:01 · 64 阅读 · 0 评论 -
LeetCode 103. Binary Tree Zigzag Level Order Traversal
Problem 题目链接 Solution 题意为做二叉树的之字型层序遍历。 即在二叉树的层序遍历基础上,第1、3、5…层(奇数层)的遍历结果反转即可。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *righ...原创 2020-04-11 16:06:22 · 60 阅读 · 0 评论 -
LeetCode 107. Binary Tree Level Order Traversal II
Problem 题目链接 Solution 题目要求二叉树自下而上的层序遍历结果。 那么换个角度想,我们可以自上而下的做层序遍历,最后只需要把层次之间做相应的逆序就可以了。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tree...原创 2020-04-11 16:02:26 · 73 阅读 · 0 评论 -
LeetCode 100. Same Tree
Problem 题目链接 Solution 给两棵二叉树,判定两棵树是否相同。 那么我们只要从根节点开始,先比较根节点的值是否相同,这里需要对根节点为NULL做特殊判断,因为若根为NULL是没有实际值的再进行val的比较会产生错误,再递归的对根节点左右子树进行比对就行。 /** * Definition for a binary tree node. * struct TreeNode { ...原创 2020-04-11 15:39:30 · 68 阅读 · 0 评论 -
LeetCode 145. Binary Tree Postorder Traversal
Problem 题目链接 Solution 递归版本的后序遍历十分简单,不再赘述。 仿照preorder、inorder的思路,我们要找出一种迭代模式,不断重复这种模式,就可以得到最后的后序遍历结果。 后序的访问顺序是左右中,因此最先被访问的,是从根节点一直左走,无左孩子可以向右边走(有右孩子的话)。这样一路下来,所有路过的节点都被压入栈中(如果同时有左右孩子要入栈,那么一定要右孩子先入栈,因为栈...原创 2020-04-10 22:32:24 · 82 阅读 · 0 评论 -
LeetCode 102. Binary Tree Level Order Traversal
Problem 题目链接 Solution 给定一棵二叉树,输出对应的层序遍历结果。 二叉树层序遍历只需借助数据结构中的队列queue就可实现。 这题的输出要求按二维数组的格式输出,每层的数据对应于一维,那么某层的节点个数如何确定呢?我们可以在每层遍历开始时,记录一下这个时候队列的size,就是这一层的节点个数了。具体解释就是,每层遍历开始时,上层的节点已经全部出队了,下层的节点还未入队,因此当前...原创 2020-04-07 17:46:36 · 53 阅读 · 0 评论 -
LeetCode 94. Binary Tree Inorder Traversal
Problem 题目链接 Notes 给定一棵二叉树,使用迭代的方法输出该二叉树的中序遍历结果。 迭代的方法就是借助stack来模拟系统堆栈的递归过程,可以先写出递归版本,再根据递归版本来编写迭代版本。 Codes 递归版本 /** * Definition for a binary tree node. * struct TreeNode { * int val; * T...原创 2020-03-31 19:28:19 · 95 阅读 · 0 评论