二叉树类
qiki_tang
不积硅步无以至千里,突破自己,糖没味儿加油!
展开
-
二叉树从一个结点到另一个结点的最大路径--可能不包括根节点
leetcode124. Binary Tree Maximum Path Sum一、问题描述给定一个非空的二叉树,找到最大路径和。对于这个问题,路径被定义为从父节点连接到树中任何节点的任意节点的任意序列。 该路径必须至少包含一个节点,并且不需要经过根节点。【举例】输入1: [1,2,3] 1 / \ 2 3输出: 6输入2:[-10,9,20,null,null...原创 2018-05-09 22:26:31 · 969 阅读 · 0 评论 -
50-求树中两个结点的最低公共祖先(多种解法扩展)
一、题目描述【题型一】输入一个树的两个结点,限定该树为二叉搜索树,求这两个结点的最低公共祖先(最低父亲结点)【题型二】输入一个树的两个结点,该树为普通树,求这两个结点的最低公共祖先(最低父亲结点),ps:树中每个节点有parent(三叉链)【题型三】输入一个树的两个结点,该树为普通树,求这两个结点的最低公共祖先(最低父亲结点)限定条件:该树不存在指向父结点的指针二、解题思路【题...原创 2018-08-21 21:04:18 · 323 阅读 · 0 评论 -
39-判断二叉树是否为平衡二叉树【树的深度&后序遍历】
一、问题描述输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。二、解题思路思路一:先递归求各结点的深度,根据深度做差值,根据差值判断是否为平衡二叉树思路二:后序遍历二叉树,在遍历的同时记录深度---避免思路一的重复计算三、解题算法1、思路1:根据深度求差值/******************...原创 2018-08-09 09:16:28 · 898 阅读 · 0 评论 -
27-二叉搜索树转换成排序的双向链表
一、问题描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表,要求不能创建任何新的结点,只能调整树中结点指针的指向。比如输入下图的二叉搜索树,则输出转换之后的排序双向链表为: 10 / \ 6 14 / \ / \ 4 8 12 16NULL <- 4 <-> 6 <-> 8 <-> 10...原创 2018-07-02 23:11:43 · 222 阅读 · 0 评论 -
18-树的子结构
一、题目描述输入两棵二叉树A和B,判断B是不是A的子结构例如: 8 --- 二叉树A / \ 8 7 / \ 9 2 / \ 4 7--------------------------------- 8 --- 二叉树B / \ 9 2则二叉树B是A的子结构二、解题思路本题主要考察二叉树的遍历...原创 2018-06-30 23:06:14 · 225 阅读 · 0 评论 -
19-二叉树的镜像
一、题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像例如: 8 --- 二叉树A / \ 6 10 / \ / \ 5 7 9 11--------------------------------- 8 --- 镜像二叉树 / \ 10 6 / \ / \ 11 9 7 5二、解题思路分析镜像二...原创 2018-06-30 23:09:12 · 160 阅读 · 0 评论 -
二叉树路径和--只记录和&记录路径
一、问题描述1、只记录和给定一棵二叉树和一个和,确定树是否有从根到叶的路径,使得沿路径加起来的所有值等于给定的总和。【示例】给定下面的二叉树 以及待求和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在一个从根到叶的路径...原创 2018-07-08 12:37:58 · 1216 阅读 · 0 评论 -
39-求二叉树的最小深度和最大深度
问题描述给定一个二叉树,找出其最小深度和最大深度。二叉树的最小深度为根节点到最近叶子节点的距离。二叉树的最大深度为根节点到最远叶子结点的距离 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 2,最大深度为3解题思路一定要注意定义,比如下面这棵树的最小深度...原创 2018-02-14 21:10:05 · 986 阅读 · 0 评论 -
【二叉树还原】已知后序和中序还原二叉树
leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal一、问题描述给定树的中序遍历和后序遍历,构造二叉树。假定树中不存在重复项中序 = [9,3,15,20,7]后序 = [9,15,7,20,3]返回下列二叉树: 3 / \ 9 20 / \ 15 7二、解题思路二叉树 ...原创 2018-05-08 15:19:24 · 1428 阅读 · 0 评论 -
【二叉树还原】已知二叉树前序和中序,求后序
问题描述 在一个二叉树中,前序遍历结果为:ABDGCEFH, 中序遍历结果为DGBAECHF,求后序遍历结果二叉树的遍历 前序遍历方式:根左右 中序遍历方式:左根右 后序遍历方式:左右根 所以,前序遍历中的第一个结点就是根结点,然后再在中序遍历序列中找到这个值所在的位置,则中序遍历序列中该值的左边部分即为需还原二叉树的左子树部分...原创 2018-03-15 13:05:23 · 2321 阅读 · 0 评论 -
23-二叉树的建立及层序遍历的实现
笔者的话 二叉树的层序遍历与其它三种遍历方式实现方式有点不一样,它与图的BFS思想一样,需要用到FIFO队列这种数据结构,C语言代码实现起来略复杂,因此笔者将层序遍历单独拿出来,方便代码的阅读。程序思想:先将树的根节点入队, 如果队列不空,则进入循环 { 将队首元素出队,并输出它; 如果该队首元素有左孩子,则将其左孩子入队; 如果该队首元素有...原创 2018-02-14 16:10:07 · 938 阅读 · 0 评论 -
二叉树后序遍历--【非递归】C语言栈实现
leetcode145 Binary Tree Postorder Traversal一、问题描述给定一个二叉树,返回它的节点值的后序遍历。---使用非递归实现二、解题思路非递归后序遍历 --- 左右根对于一个节点而言,要实现访问顺序为左儿子-右儿子-根节点,可以利用后进先出的栈,在节点不为空的前提下,依次将根,右,左压栈。故需要按照根-右-左的顺序遍历树,而先序遍历的顺序是根-左-右,故只需将先...原创 2018-05-07 15:56:41 · 5742 阅读 · 5 评论 -
二叉树中序遍历--【非递归】C语言栈实现
leetcode94 Binary Tree inorder Traversal一、问题描述给定一个二叉树,返回它的节点值的中序遍历。---使用非递归实现【举例】输入 [1,null,2,3] 1 \ 2 / 3输出 [1,2,3]二、解题思路非递归实现--使用栈中序遍历:左根右从当前节点T出发,压栈-> T=T->left,左子树一直压栈,一直到遍历到最深...原创 2018-05-07 15:52:05 · 5222 阅读 · 1 评论 -
二叉树前序遍历--【非递归】C语言栈实现
leetcode144 Binary Tree Preorder Traversal一、问题描述给定一个二叉树,返回它的节点值的先序遍历。---使用非递归实现【示例】输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]二、解题思路非递归前序遍历思路:step1:遍历一个结点,先访问它(打印或存入结果数组)【根】,再将它压栈,并遍历它的左子树【左】s...原创 2018-05-07 15:43:30 · 4595 阅读 · 2 评论 -
二叉树的建立以及先序、中序、后序遍历C语言实现---【递归方式】
下面的C语言代码将用下图的二叉树作为测试例,输出前中后三种遍历方式下的结果。代码实现:/**********************************************Author:tmwdate:2018-2-13**********************************************/#include <stdio.h>#include &...原创 2018-02-14 15:56:32 · 53465 阅读 · 7 评论 -
C语言二叉树层序遍历--malloc二维数组存储每层结果
本题来自leetcode 102. Binary Tree Level Order Traversal一、问题描述给定一个二叉树,返回其节点值的层序遍历。(即从左到右,逐级)【举例】给定一个二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回层序遍历:[ [3], [9,20], [15,7]]二、解题思路关键点1...原创 2018-05-05 22:23:50 · 1970 阅读 · 1 评论 -
二叉树根到叶组合数的和
leetcode:129. Sum Root to Leaf Numbers一、问题描述给定一个只包含0-9数字的二叉树,每个根到叶子路径可以代表一个数字。一个例子是代表数字123的根到叶路径1-> 2-> 3。查找所有根到叶数量的总和。注意:叶子是没有孩子的节点。【举例】输入 [1,2,3] 1 / \ 2 3输出:25sum = 12 + 13 = 25.输入: [...原创 2018-05-09 22:42:08 · 305 阅读 · 0 评论 -
满二叉树结点加next
leetcode:116. Populating Next Right Pointers in Each Node 一、问题描述给定一个二叉树结构struct TreeLinkNode{ TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next;}填充每个下一个指针指向其下一个右侧节点。 如果没有下一个...原创 2018-05-09 22:38:24 · 398 阅读 · 0 评论 -
二叉排序树转变成排序的双向链表
一、问题描述输入一棵二叉查找树,将该二叉查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。【举例】 10 / \ 6 14 / \ / \4 8 12 16 转换成双向链表4=6=8=10=12=14=16二、解题思路题目要求不能创建任何新的结点,只需要调整指针的指向,那么就意味着可直接利用二叉树...原创 2018-10-25 22:06:59 · 621 阅读 · 0 评论