树
BIG_GENERAL_DD
好好学习,天天向上.
展开
-
按之字形打印二叉树 (Java实现)
请实现一个函数按照之字形打印二叉树。即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:是直接基于 多行打印二叉树的题解, 在对偶数行进行逆序,即可满足条件。但是奇怪的是,如下的代码,总是报错:// import java.util.ArrayList;// /*// public class TreeNode {// int val = 0;// TreeNode left =...原创 2021-03-29 14:49:19 · 434 阅读 · 0 评论 -
将二叉树打印成多行 (Java实现)
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。典型的层序遍历import java.util.*;public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayList<Integer>(); if(root..转载 2021-03-29 14:02:57 · 190 阅读 · 0 评论 -
二叉树的下一个节点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。https://blog.nowcoder.net/n/37b2e6170ffb4acaa27f67f88b1b1922?f=comment时间复杂度:O(n)O(n)空间复杂度:O(n)O(n)/*public class TreeLinkNode { int val; TreeLinkNode left = null; .转载 2021-03-29 12:39:49 · 124 阅读 · 0 评论 -
平衡二叉树 (Java实现)
输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。https://blog.nowcoder.net/n/7148665d45924433a272c7b99ca79311?f=comment平衡二叉树的定义是左右子树高度差不超过1,同时左右子树也是平衡二叉树,于是代..转载 2021-03-29 12:15:43 · 199 阅读 · 0 评论 -
序列化/反序列化二叉树 (Java实现)
请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,",然后通过自己.原创 2021-03-29 11:47:56 · 267 阅读 · 0 评论 -
二叉搜索树的第K个节点 (Java实现)
给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。思路: //利用二叉搜索树的特性, 左子树的节点比根节点值小,右子树的节点比根节点值大 // 对二叉搜索树进行前序遍历, 就是一个升序的 数据结构 // 可以将二叉搜索树的节点存在一个列表结构中, 从而将题目转换为求解 下标为第k-1个的节点/*public class TreeNode { int val = 0; TreeNode left = null; ...原创 2021-03-28 23:00:01 · 200 阅读 · 0 评论 -
对称二叉树(Java实现)
请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路: 新建一个镜像二叉树,然后再来比较两个二叉树是否相同。 难点,另外构建2个辅助函数,2个辅助函数中分别递归。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { .原创 2021-03-28 18:24:50 · 353 阅读 · 0 评论 -
二叉树的深度 (Java实现)
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。递归解法:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*///递归左右子树,比较左右侧的.原创 2021-03-28 17:33:38 · 160 阅读 · 0 评论 -
BST二叉搜索树的后序遍历 (Java实现)
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜素树)public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { int len_sq = sequence.length; if( sequence == null || len_sq.原创 2021-03-28 17:00:11 · 179 阅读 · 0 评论 -
打印二叉树(Java实现)
从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路: 层次遍历;import java.util.ArrayList;import java.util.Queue; // 此处增加了一个Queue import java.util.LinkedList; // 此处增加一个 LinkedList/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode r..原创 2021-03-28 16:06:04 · 1566 阅读 · 0 评论 -
二叉树翻转/镜像 (Java实现)
操作给定的二叉树,将其变换为源二叉树的镜像。Leetcode226 翻转二叉树import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */public class So.原创 2021-03-28 14:57:02 · 541 阅读 · 0 评论 -
二叉树子结构 (Java实现)
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:约定空树不是任意一个树的子结构)/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { // 被调用函数..转载 2021-03-28 14:33:05 · 158 阅读 · 0 评论 -
重建二叉树 (Java实现)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 (注意:树中没有重复值)假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode ri.原创 2021-03-28 13:50:56 · 399 阅读 · 0 评论 -
树学习(2)
1、 一颗哈夫曼树的带权路径长度等于其中所有分支结点的权值之和。(错误)分析:树的带权路径长度:定义为树中所有叶结点的带权路径长度之和;(即等于所有结点(叶结点+分支结点)的权值之和,而不是分支结点权值之和)。一棵树的权,也就是根结点的权,等于叶节点的权值之和。 结点带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。 叶节点:度为0;分支结点:度不为原创 2017-05-16 10:15:21 · 2616 阅读 · 3 评论 -
树学习(4)
1、二叉排序树(二叉搜索树)中,最小值结点的(左孩子一定为空指针)分析:二叉排序树:左中右。 2、软件生存周期(SDLC,软件生命周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试与测试、验收与运行、维护升级到废弃,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,原创 2017-05-19 12:52:43 · 1741 阅读 · 0 评论 -
树学习(5)
1. 二元查找树的任何结点的左右子树都是二元查找树。分析:二元查找树: 它首先要是一棵二元树,在这基础上它或者是一棵空树;或者是具有下列性质的二元树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二元查找树 2. 树中的结点和图中的顶点就是指数据结构中的数据元素。原创 2017-06-19 12:22:42 · 800 阅读 · 0 评论 -
辨析B树(B-、B+、B*)
B- 树 是一种多路搜索树(并不是二叉的): 1. 定义任意非叶子结点最多只有 M 个儿子;且 M>2 ; 2. 根结点的儿子数为 [2, M] ; 3. 除根结点以外的非叶子结点的儿子数为 [M/2, M] ; 4. 每个结点存放至少 M/2-1(取上整)和至多 M-1 个关键字;(至少 2 个关键字)转载 2017-06-21 14:56:07 · 636 阅读 · 0 评论 -
树学习(6)
1. m阶B-树的任何一个结点的左右子树的高度都相等。(因为B-树都是树高平衡的,所以任何一个结点的左右子树的高度都是相等的。)因为B系列树,包括B-、B+、B*,所有叶子结点都在同一层,所以左右子树的高度都是相等。 2. 二叉树的结点的前序序列、中序序列、后序序列中,所有叶子结点的先后顺序(完全相同)分析:因为根据三个遍历的次序和特点,前序是根左右、中序是左根右、后序是左原创 2017-06-21 16:11:48 · 731 阅读 · 0 评论 -
树学习(7)
1. 中序遍历二叉树可以得到一个有序序列。(正确)2. 对于n个结点的二叉树,其高度为不确定。(如果是完全二叉树,则是[log2n]+1)3. 一颗有124个叶子结点的完全二叉树,最多有248个结点。分析:设第7层叶子结点x个,第6层叶子结点y个,则x/2+y=64x+y=124解得x=120,y=4 。则总的结点个数为120+27 -1=247。下面是原创 2017-06-26 10:44:45 · 1564 阅读 · 0 评论 -
树学习(3)
1、 非空的平衡二叉树中插入一个节点,原有节点中至少一个节点的平衡因子会改变。分析:一旦插入一个节点原先节点至少会有一个节点的平衡因子会改变。平衡因子=H左子树-H右子树,即使插入结点后不改变原二叉树的平衡性,平衡因子也会改变。 2、 已知一棵树的先序、中序、后序序列,还原这颗树需要?分析:还原树必须要知道包括中序序列在内的任意两种序列。即后序+中序、前原创 2017-05-16 12:03:27 · 586 阅读 · 0 评论 -
二叉树转换为链表
一、问题描述输入一棵二叉搜索树,现在要将该二叉搜索树转换成一个排序的双向链表。而且在转换的过程中,不能创建任何新的结点,只能调整树中的结点指针的指向来实现。查阅了相关内容,基本了解了这个问题的解析方法与思想。二叉搜索树转换为有序双向链表DList BSTreeToList(BSTree tree){ if(tree == NULL) r原创 2017-09-12 10:37:41 · 1774 阅读 · 0 评论 -
图论面试题精讲
本篇博客是关于七月算法 ,曹鹏老师所讲的关于图论部分的习题,加上自己的补充与笔记!//给定二叉树的前序和中序遍历,构造二叉树 leetcode105、106 //二叉树每个节点有一个整数,返回和最大的路径 leetcode124//二叉树最小深度 ,注意空子树 leetcode111//判断二叉树平衡 leetcode110 //最大深度 lee原创 2017-09-11 20:26:56 · 1443 阅读 · 0 评论 -
二叉树的递归遍历与非递归遍历
递归遍历中序遍历中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游。在二叉树中,先左后根再右。巧记:左根右。树中结点结构为typedef struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right; struct TreeNode *p原创 2017-08-31 16:14:45 · 504 阅读 · 0 评论 -
树学习(1)
1、 二叉树是非线性数据结构,所以顺序存储结构与链式存储结构都能存储。(分析:普通二叉树可以用链表存储,对于完全二叉树由于树本身的特性,一个节点标号为i,则其左孩子为2i+1,右孩子为2i+2,父节点为(i-1)*2 由此公式可以通过数组来存储。数组为顺序存储结构,链表为链式存储结构。 2、 完全二叉树中,非叶节点最多没有右孩子。没有左孩子的话,就原创 2017-05-15 13:33:22 · 828 阅读 · 0 评论