![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
北大人工智能yjt
像写自然语言一样编码.
展开
-
写树算法的套路框架(摘抄labuladong大神)
1. 但是这个算法出现了错误,BST的每个节点应该要小于右边子树的所有节点,下面这个二叉树显然不是 BST,但是我们的算法会把它判定为BST。2.出现错误,不要慌张,框架没有错,一定是某个细节问题没注意到。我们重新看一下 BST 的定义,root 需要做的不只是和左右子节点比较,而是要整个左子树和右子树所有节点比较。怎么办,鞭长莫及啊!3. 很简单,其...原创 2020-03-14 12:48:40 · 728 阅读 · 0 评论 -
leetcode100_相同的树_二叉树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */c...原创 2020-03-14 10:46:07 · 77 阅读 · 0 评论 -
深信服2020编程题
一. 深信服2020编程第一题. 题目大意是从层次遍历序列得到前序遍历序列...一开始看得有些懵..现在来总结一下.(因为我自己定义输入输出,所以就没有原题那么严格了.........)二叉树的序列化#include <iostream>#include <queue>using namespace std;struct TreeNode { in...原创 2019-10-23 14:52:03 · 617 阅读 · 0 评论 -
leetcode297_二叉树的序列化与反序列化
一. 学习题,一直对这题有些困惑,直接看答案了...作者:LeetCode链接:https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/solution/er-cha-shu-de-xu-lie-hua-yu-fan-xu-lie-hua-by-leet/来源:力扣(LeetCode)著作权归作者所有...原创 2019-10-23 10:44:15 · 234 阅读 · 0 评论 -
leetcode113_路径总和2
一. 挺像回溯法, 给定tmp,满足条件添加进入res,否则通过回溯进行查找.#include <iostream>#include <vector>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(...原创 2019-10-22 20:15:36 · 121 阅读 · 0 评论 -
leetcode112_路径总和
一. 树的问题首先想到的就是递归.先放上自己的思路.#include <iostream>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NU...原创 2019-10-22 17:34:33 · 88 阅读 · 0 评论 -
leetcode111_二叉树最小深度
一. 和求最长路径差不多, 但是需要注意的点是,如果当前节点的右子树或者左子树为空, 则其最小深度不是0,而是看其旁边子树的深度........#include <iostream>#include <vector>#include <algorithm>using namespace std;struct TreeNode { int va...原创 2019-10-20 22:44:55 · 77 阅读 · 0 评论 -
leetode110_平衡二叉树
一. 肯定递归啦.....#include <iostream>#include <vector>#include <algorithm>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : va...原创 2019-10-20 22:37:07 · 79 阅读 · 0 评论 -
leetcode109_有序链表转换二叉搜索树
一. 思路应该和leetcode108_将有序数组转换为二叉搜索树差不多, 但是需要找中点, 没数组高效, 看题解如何处理.作者:LeetCode链接:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/solution/you-xu-lian-biao-zhuan-huan-er-cha-so...原创 2019-10-20 21:45:47 · 152 阅读 · 0 评论 -
leetode108_将有序数组转换为二叉搜索树
一. 遇到树的问题我第一个想到的就是递归.class Solution {public: TreeNode* helper(int left, int right, vector<int>& nums) { //类似二分,中点即是根节点,中点左边左子树,右边右子树. if (left > right) return NULL; int mid = ...原创 2019-10-20 19:59:06 · 87 阅读 · 0 评论 -
leetcode107_二叉树层次遍历2
一. 借鉴之前二叉树的相关题目, 因为这题是从二叉树最底层获取层次值, 因此我先获取二叉树深度, 然后加入level参数, 将值插入在应该插入的层级中.(对比着leetcode102_二叉树的层次遍历看就更好了)#include <iostream>#include <algorithm>#include <vector>using namespa...原创 2019-10-19 16:53:30 · 104 阅读 · 0 评论 -
leetcode104_二叉树的最大深度
一. 简单题,理解清楚递归函数的定义即可.#include <iostream>#include <algorithm>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x)...原创 2019-10-19 15:12:51 · 74 阅读 · 0 评论 -
leetcode106_从中序与后序遍历序列构造二叉树
一. 这题可以参考leetcode105_从前序与中序遍历序列构造二叉树的递归思路....1. 从前序与中序的思路是: 先序遍历的顺序是根节点,左子树,右子树。中序遍历的顺序是左子树,根节点,右子树。所以我们只需要根据先序遍历得到根节点,然后在中序遍历中找到根节点的位置,它的左边就是左子树的节点,右边就是右子树的节点。2. 所以自然的, 从中序与后序的思路和其反过来.反过来遍历后序...原创 2019-10-19 14:43:45 · 89 阅读 · 0 评论 -
leetcode105_从前序与中序遍历序列构造二叉树
一. 这题没什么好的思路,参考官方题解了.........作者:LeetCode链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/solution/cong-qian-xu-he-zhong-xu-bian-li-xu-lie-gou-zao-er/...原创 2019-10-19 11:09:37 · 98 阅读 · 0 评论 -
leetcode103_二叉树的锯齿形层次遍历
一. 思考的不太对,参考大神了.作者:powcai链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/solution/die-dai-he-di-gui-by-powcai-3/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。二....原创 2019-10-18 14:06:59 · 91 阅读 · 0 评论 -
leetcode102_二叉树的层次遍历
一. 这题是重点学习题作者:LeetCode链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/er-cha-shu-de-ceng-ci-bian-li-by-leetcode/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。...原创 2019-10-18 10:52:57 · 148 阅读 · 2 评论 -
leetcode101_对称二叉树
一. 感觉很简单, 但是自己就是写不出来, 得再多学习学习了.........二. 参考官方题解了.作者:LeetCode链接:https://leetcode-cn.com/problems/symmetric-tree/solution/dui-cheng-er-cha-shu-by-leetcode/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权...原创 2019-10-17 22:56:48 · 92 阅读 · 0 评论 -
leetcode100_相同的树
一. 这题一眼看上去就是递归.#include <iostream>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};...原创 2019-10-17 21:40:24 · 85 阅读 · 0 评论 -
leetcode99_恢复二叉搜索树
一. 困难题直接看题解, 快速刷一遍.二. 参考题解作者:powcai链接:https://leetcode-cn.com/problems/recover-binary-search-tree/solution/zhong-xu-bian-li-by-powcai/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1. 思路...原创 2019-10-17 10:26:51 · 114 阅读 · 0 评论 -
leetcode98_验证二叉搜索树
一. 二叉树的题目感觉不是递归就是动态规划.(注意二叉搜索树的理解,一开始验证的时候题目的意思理解错误了,以为只要左右一层的子树满足就可以了).#include <iostream>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNo...原创 2019-10-16 22:37:16 · 74 阅读 · 0 评论 -
leetcode96_不同的二叉搜索树
一. 本来想模仿leetcode95_不同的二叉搜索树2的递归方法的,但是很遗憾的是超时了.//超时class Solution {public: int getAns(int start, int end) { if (start > end) return 0; if (start == end) return 1; int left, right, count...原创 2019-10-15 10:32:30 · 111 阅读 · 0 评论 -
leetcode94_二叉树的中序遍历
一. 这题最直接的思路就是递归.#include <iostream>#include <vector>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(N...原创 2019-10-13 22:41:34 · 194 阅读 · 0 评论 -
leetcode95_不同的二叉搜索树2
一. 因为当时没有理清二叉搜索树的含义,所以直接看答案了.........所以基础的数据结构一定要好好掌握.二. 参考大神作者:windliang链接:https://leetcode-cn.com/problems/unique-binary-search-trees-ii/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-b...原创 2019-10-07 13:33:01 · 112 阅读 · 0 评论