树
算法 树
free1993
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 34. 二叉树中和为某一值的路径
题目 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 示例 代码 class Solution { public: int target; vector<vector<int>> ans; void getPath(TreeNode * cur, vector<int> path, int curSum){ if(cur == NULL) retu原创 2021-06-23 17:08:49 · 82 阅读 · 0 评论 -
剑指 Offer 55 - II. 平衡二叉树
题目 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {}原创 2021-06-22 20:07:50 · 77 阅读 · 0 评论 -
剑指 Offer 28. 对称的二叉树
题目 思路 如果对称,对于一个节点来说,假设这个节点非空,那么必须满足: cur->left和cur->right首先数值相同 cur->left->left和cur->right->right相同 cur->left->right和cur->right->left相同 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; *原创 2021-06-22 19:42:26 · 68 阅读 · 0 评论 -
剑指 Offer 27. 二叉树的镜像
题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 思路 就是交换每个节点的左右节点的指针指向。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class原创 2021-06-22 19:10:29 · 76 阅读 · 0 评论 -
剑指 Offer 55 - I. 二叉树的深度
题目 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {原创 2021-06-22 17:56:02 · 64 阅读 · 0 评论 -
leecode.从上到下打印二叉树系列
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution {原创 2021-06-22 17:36:51 · 91 阅读 · 0 评论 -
剑指 Offer 54. 二叉搜索树的第k大节点
题目 给定一棵二叉搜索树,请找出其中第k大的节点。 示例 思路 中序遍历 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { pu原创 2021-06-21 16:30:20 · 83 阅读 · 0 评论 -
剑指 Offer 26. 树的子结构
题目 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 思路一 本来想着的是找到中序遍历的结果,如果后面的中序遍历是前面的中序遍历的子串,这样一定结构是相同的。 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;原创 2021-06-20 16:10:57 · 67 阅读 · 0 评论 -
剑指offer07.重构二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 限制: 0 <= 节点个数 <= 5000 代码 class Solution { public: unordered_map<int, int> index; int n; TreeNod原创 2021-06-16 17:46:45 · 67 阅读 · 0 评论 -
leecode.1584. 连接所有点的最小费用
题目 给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] = [xi, yi] 。 连接点 [xi, yi] 和点 [xj, yj] 的费用为它们之间的 曼哈顿距离 :|xi - xj| + |yi - yj| ,其中 |val| 表示 val 的绝对值。 请你返回将所有点连接的最小总费用。只有任意两点之间 有且仅有 一条简单路径时,才认为所有点都已连接。 示例 输入:points = [[0,0],[2,2],[3,10],[5,2],[7,0]] 输出:20 解释: 我原创 2021-01-19 15:43:48 · 146 阅读 · 0 评论 -
leecode.124. 二叉树中的最大路径和
题目 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例一 输入:[1,2,3] 1 / \ 2 3 输出:6 思路分析 我们采用递归的方式:每次相加的(左子树),(右子树),(左子树,右子树),(空)。 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val;原创 2021-01-04 14:16:41 · 85 阅读 · 0 评论 -
leecode.103. 二叉树的锯齿形层序遍历
题目 二叉树的锯齿形层序遍历 给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如: 给定二叉树 [3,9,20,null,null,15,7], 返回锯齿形层序遍历如下: 思路分析 每次输出队列头的元素的数值 遍历入队的时候,如果当前是奇数层,遍历顺序应该是从左到右,同时将左右的孩子入队;如果当前是偶数层,遍历顺序应该是从右到左,此时将孩子从队头入队。 代码 /** * Definition for a binary tr原创 2020-12-22 10:46:10 · 115 阅读 · 0 评论