一、试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构,且树中结点的关键字均不同。 答: 由分析可以知道,通过教材所学的知识我们很容易知道二叉排序树的特点。按照中序遍历的顺序,应当符合当前遍历到的节点值大于前一个遍历到的节点值,所以我们最终得到的中序遍历序列是一个有序序列, ...
分类:
编程语言 时间:
2020-09-03 16:43:50
阅读次数:
48
本章学习了几种查找的方法,顺序查找、折半查找、二叉排序树查找、哈希表。 对于几种查找的特点,顺序查找的算法简单但是查找效率低,折半查找对结构要求高,同时查找效率也高,二叉排序树查找的数据结构采用二叉链表,删除和插入操作只需要移动指针。 线性表的查找介绍了顺序查找、折半查找、分块查找。 顺序查找比较简 ...
分类:
其他好文 时间:
2020-06-28 22:24:15
阅读次数:
51
一、线索二叉树的原理 通过考察各种二叉链表,不管儿叉树的形态如何,空链域的个数总是多过非空链域的个数。 n各结点的二叉链表共有2n个链域,非空链域为n-1个,但其中的空链域却有n+1个。如下图所示。 (除根结点以外,所有结点都有一共指向它的结点,所有非空链域为n-1,空链域为n+1) 因此,提出了一 ...
分类:
其他好文 时间:
2020-06-03 20:09:24
阅读次数:
54
题目:从键盘接受输入,每个节点所含数据元素均为单字符,要完成:建立一棵二叉链表表示方式存储的二叉排序树,并打印输出对其由大到小遍历的结果。测试数据:输入 EFHJBCAGID,符号“@”表示结束字符 分析:方法一:中序遍历该二叉排序树,即可得到由小到大遍历的结果,并将每个结果都存放在一个栈中,然后再 ...
分类:
编程语言 时间:
2020-04-22 20:24:01
阅读次数:
138
#include<stdio.h> #include<stdlib.h> //二叉链表 //typedef struct BitLink { // int data; // struct BitLink* leftChild; //左指针 // struct BitLink* rightChild; ...
分类:
其他好文 时间:
2020-04-14 18:25:12
阅读次数:
84
以二叉链表作为二叉树的存储结构,交换二叉树中每个结点的左孩子和右孩子。 输入格式: 输入二叉树的先序序列。 提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。 输出格式: 输出有两行: 第一行是原二叉树的中序遍历序列; 第二行是交换后的二叉树 ...
分类:
其他好文 时间:
2020-04-08 12:06:10
阅读次数:
932
树的遍历有3种:先根遍历、中根遍历、后根遍历; 先根遍历:如果该二叉树为空树,则空操作,否则先访问根结点,再先根遍历左子树,最后先根遍历右子树。 1 //该二叉树用二叉链表存储,结点类型BiTreeNode 2 void pre_oder(BiTreeNode *root){ 3 if(root!= ...
分类:
其他好文 时间:
2020-02-14 14:33:36
阅读次数:
51
线索化二叉树介绍: 1)n个节点的二叉树含有n+1【公式 2n-(n-1)=n+1】个空指针域。利用二叉链表中的空指针域,存放指向该节点在某种遍历次序下的前驱和后继节点的指针(这种附加指针称为“线索”) 2)这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。根据线索性质的不同,线索二 ...
分类:
其他好文 时间:
2020-01-30 11:21:42
阅读次数:
84
题目描述 假设二叉树用二叉链表存储,用先序序列结果创建。输入二叉树的先序序列,请你先创建二叉树,并对树做个镜面反转,再输出反转后的二叉树的先序遍历、中序遍历、后序遍历和层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。 --程序要求-- 若使用C++只能include一个头文件iost ...
分类:
其他好文 时间:
2020-01-11 20:04:26
阅读次数:
122
中序输入:A、B、C、#、#、#、D、#、# 二叉树的实现以及四种遍历: 1 #include <iostream> 2 #include <string> 3 #include <queue> 4 using namespace std; 5 6 template<class T> 7 struc ...
分类:
其他好文 时间:
2019-11-18 09:34:44
阅读次数:
69