输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路:前序遍历,第一个节点为二叉树root;中序遍历,左中右, ...
分类:
其他好文 时间:
2020-05-25 17:51:28
阅读次数:
78
Q:二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。 A: 1.中序遍历 根据出现降序的次数 找出两个错误的节点,交换节点值 只出现一次降序 则第一个为降序时较大的,第二个为降序时较小的 出现了两次降序 则第一个为第一次降序时较大的,第二个为第二次降序时较小的 2.为了满足 ...
分类:
其他好文 时间:
2020-05-25 15:12:22
阅读次数:
40
/** * 给出一个二叉树的节点,返回该节点的前驱节点(中序遍历的上一个节点称为前驱节点) * <p> * 1)如果该节点有左子树,那么该节点的前驱节点一定是左子树上最右边的节点; * 2)如果该节点无左子树,那么往上找; * 3)如果该节点是父节点的右子树,那么返回该父节点;如果该节点是父节点的左 ...
分类:
其他好文 时间:
2020-05-24 13:47:28
阅读次数:
50
【先序遍历】DLR:先根再左再右:A->B->C-D->E->F->G->H [中序遍历] LDR:先左再根再右:B->D->C->E->A->F->H->G 【后序遍历】LRD:先左再右再中:D->E->C->B->H->G->F->A 图(1) 【先序遍历】DLR:先根再左再右:A->B->D- ...
分类:
其他好文 时间:
2020-05-23 16:37:39
阅读次数:
124
题目描述 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 我的题解:递归 前序拿到根节点,在中序中找到该节点左边的元素和右边的元素,递归下去. 看了官方的递归解法,思路差不多,更简洁一些: java class Solution { public TreeNode ...
分类:
其他好文 时间:
2020-05-23 09:24:45
阅读次数:
47
方法一:递归 public TreeNode buildTree(int[] preorder, int[] inorder) { return buildTreeHelper(preorder, 0, preorder.length, inorder, 0, inorder.length); } ...
分类:
其他好文 时间:
2020-05-23 00:43:34
阅读次数:
59
题目描述:根据一棵树的前序遍历与中序遍历构造二叉树。假设树中没有重复的元素。 今日学习: 1.复习二叉树遍历 2.复习map 3.搭建mediasoup demo(websocket连接失败,原因没找到) 4.脚手架是为了减少因为想要减少重复工作而进行的重复工作 "天使爆破组" 果然是小天使,题解一 ...
分类:
其他好文 时间:
2020-05-22 21:23:30
阅读次数:
57
思路: 给出二叉树的先序和中序遍历 要求求出后序遍历 我们知道根据先序遍历和另外一种遍历我们 可以建立以可二叉树,但是应该存在一种更简单的 办法使得不用建树也能够成功得到序列 首先我们都知道: 1. 先序遍历的第一个结点一定是根节点 2. 后序遍历的最后一个结点一定是根节点 我们只需要在中序遍历中找 ...
分类:
其他好文 时间:
2020-05-21 19:36:07
阅读次数:
43
一、算法分析 首先,由中序遍历特定可知,第一个节点是根节点,其次,由前序遍历特定可知,根节点左边是左子树,右边是右子树。因此,对于当前根,能确定其左子树的前序序列、中序序列,也能确定其右子树的前序序列、中序序列。 二、Java实现 题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 ...
分类:
其他好文 时间:
2020-05-21 09:48:25
阅读次数:
48
1 //结构体定义如下 2 struct TreeNode 3 { 4 char val; 5 TreeNode* left; 6 TreeNode* right; 7 TreeNode(char x) : val(x), left(NULL), right(NULL) {} 8 }; 1. 前序遍 ...
分类:
其他好文 时间:
2020-05-17 19:13:57
阅读次数:
64