![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树的处理
dxx707099957
这个作者很懒,什么都没留下…
展开
-
617. Merge Two Binary Trees
Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.You need to merge them into a new binary tree. ...原创 2018-03-20 14:35:33 · 89 阅读 · 0 评论 -
821. 字符的最短距离
给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。 示例 1: 输入: S = "loveleetcode", C = 'e' 输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0] 说明: 字符串 S 的长度范围为 [1, 10000]。 C 是一个单字符,且保证是字符串 S 里的字符。 ...原创 2018-08-14 11:12:20 · 144 阅读 · 0 评论 -
二叉树的非递归遍历(不用栈、O(1)空间)
本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求: O(1)空间复杂度,即只能使用常数空间; 二叉树的形状不能被破坏(中间过程允许改变其形状)。 通常,实现二叉树的前序(preorder)、中序(inorder)、后序(postorder)遍历有两个常用的方法:一是递归(recursive),二是使用栈实现的迭代版本(stack+iterative)。这两种方法都...转载 2019-03-14 12:15:43 · 1915 阅读 · 2 评论 -
剑指27:二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题思路: 1、用递归,节点的左链表相邻节点为该节点的左子树最右节点,节点的右链表的相邻节点为该节点的右子树的最左节点 2、用非递归,中序遍历、记录节点的前一个节点 方法一: //递归,先判断左子树,再判断右子树。左指针指向左子树最右节点,右指针指向右子...原创 2019-03-30 17:26:23 · 90 阅读 · 0 评论 -
LCA 最近公共祖先 Tarjan(离线)算法的基本思路及其算法实现
首先是最近公共祖先的概念(什么是最近公共祖先?): 在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点。 换句话说,就是两个点在这棵树上距离最近的公共祖先节点。 所以LCA主要是用来处理当两个点仅有唯一一条确定的最短路径时的路径。 有人可能会问:那他本身或者其父亲节点是否可以作为祖先节点呢?...转载 2019-05-12 18:25:32 · 95 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root =[3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root =...原创 2019-05-12 20:00:28 · 190 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root =[6,2,8,0,4,7,9,null,null,3,5] 示例 1: 输入: ro...原创 2019-05-12 20:04:10 · 433 阅读 · 0 评论 -
654. 最大二叉树
给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。 左子树是通过数组中最大值左边部分构造出的最大二叉树。 右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构建最大二叉树,并且输出这个树的根节点。 Example 1: 输入: [3,2,1,6,0,5] 输入: 返回下面这棵树的根节点: 6 /...原创 2019-05-13 10:34:49 · 241 阅读 · 0 评论 -
1008. 先序遍历构造二叉树
返回与给定先序遍历preorder相匹配的二叉搜索树(binarysearchtree)的根结点。 (回想一下,二叉搜索树是二叉树的一种,其每个节点都满足以下规则,对于node.left的任何后代,值总<node.val,而node.right的任何后代,值总>node.val。此外,先序遍历首先显示节点的值,然后遍历node.left,接着遍历node....原创 2019-05-13 16:29:16 · 550 阅读 · 0 评论