void flatten(TreeNode root) { // base case,即最小 if (root == null) return; flatten(root.left); flatten(root.right); /**** 后序遍历 ****/ // 1、保存原来的左右节点,避免变换 ...
分类:
其他好文 时间:
2021-03-16 11:50:33
阅读次数:
0
ref #include <stdio.h> #include <stdlib.h> typedef struct node { int data; struct node *lchild, *rchild; }bitree_t; bitree_t *createNode(int data) { b ...
分类:
编程语言 时间:
2021-03-15 11:35:22
阅读次数:
0
二叉树的前序、中序、后序遍历 每个节点会被经过3次,前序、中序、后序的区别在于:在哪一次经过该节点时对其进行访问。 2. 递归实现 traverseRecursive(BiTrNode<T>* node): basecase: if(node == nullptr) return; general: ...
分类:
编程语言 时间:
2021-03-15 11:08:04
阅读次数:
0
236. 二叉树的最近公共祖先 题目描述 相似题目:https://www.cnblogs.com/GarrettWale/p/14406641.html 题解分析 此题是利用二叉树的后序遍历来求解最近公共祖先。 递归的出口是遍历到叶子结点或者当前结点(root)等于待搜索的结点(p或者q),此时需 ...
分类:
其他好文 时间:
2021-03-15 10:51:02
阅读次数:
0
1.二叉树的前序遍历:输出当前结点的值之后再去判断是否含有子节点如果有就继续调用递归;2.二叉树的中序遍历:先判断当前节点的一个子节点是否存在并递归之后再去输出当前节点的值,再继续判断另一边的节点;3.二叉树的后序遍历:先判断左右两边的子节点是否存在,如果存在就去递归,直到最后的递归完成后再输出当前 ...
分类:
其他好文 时间:
2021-03-15 10:48:20
阅读次数:
0
问题 序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 示例 输入: "9,3,4,#,#,1,#,#,2,#,6,#,#" 输出: true 解答 class Solution { public: ...
分类:
其他好文 时间:
2021-03-12 14:19:20
阅读次数:
0
问题 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSu ...
分类:
其他好文 时间:
2021-03-12 13:01:16
阅读次数:
0
问题 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 示例 解答1:递归 class Solution { public: TreeNode* mirrorTree(TreeNode* root) { if (!root) return nullptr; // 前序操作 swap(root-> ...
分类:
其他好文 时间:
2021-03-11 17:54:57
阅读次数:
0
二叉树 1.1 为什么需要树这种数据结构 1) 数组存储方式的分析 优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 [示意图] 画出操作示意图: 2) 链式存储方式的分析 优点:在一定程度上对 ...
分类:
编程语言 时间:
2021-03-09 13:27:10
阅读次数:
0
问题: 给定一棵二叉树。 求给定节点target开始,距离K的所有节点。 Example 1: Input: root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, K = 2 Output: [7,4,1] Explanation: The nodes ...
分类:
其他好文 时间:
2021-03-09 13:09:46
阅读次数:
0