合并二叉排序树
来源:互联网 发布:淘宝网雪地靴女 编辑:程序博客网 时间:2024/05/15 02:55
描述:
先序建立两棵二叉排序树,采用二叉链表结构存储,将这两棵二叉排序树合并成一棵新的二叉排序树,并按照中序序列输出合并后的二叉排序树。
输入:
输入两行先序遍历的整型数据,并以此分别建立两棵二叉排序树(其中整型数据必须为大于等于零的整数)。
如输入某二叉排序树的先序序列为:12 8 4 -1 -1 10 -1 -1 16 13 -1 -1 18 -1 -1(其中-1代表空树)。
输出:
按照中序序列输出合并后的二叉排序树(输出结果后换行)。
输入样例:
12 8 4 -1 -1 10 -1 -1 16 13 -1 -1 18 -1 -1
17 6 2 -1 -1 9 -1 -1 24 19 -1 -1 26 -1 -1
输出样例:
2 4 6 8 9 10 12 13 16 17 18 19 24 26
#include<iostream>using namespace std;typedef struct BTNode{ int data; struct BTNode *lchild,*rchild;}BTNode,*BTree;//二叉树节点void Create_Tree(BTree *T)//先序创建二叉树,-1表示该树为空{ int cd; cin>>cd; if(-1==cd) *T=NULL; else { (*T)=new BTNode; (*T)->data=cd; Create_Tree(&(*T)->lchild); Create_Tree(&(*T)->rchild); }}void LDR(BTree T)//中序遍历输出{ if(T) { LDR(T->lchild); cout<<T->data<<" "; LDR(T->rchild); }}void InsertBST(BTree *T,int key)//向二叉排序树中插入单个关键字key{ while((*T)!=NULL) { if((*T)->data>key) T=&(*T)->lchild; else if((*T)->data<key) T=&(*T)->rchild; } (*T)=new BTNode; (*T)->lchild=NULL; (*T)->rchild=NULL; (*T)->data=key;}void Insert_LDR(BTree T1,BTree T2)//向二叉排序树T1中插入二叉排序树T2中的所有关键字key{ if(T2) { Insert_LDR(T1,T2->lchild); InsertBST(&T1,T2->data); Insert_LDR(T1,T2->rchild); }}int main(){ BTree T1,T2; Create_Tree(&T1); Create_Tree(&T2); Insert_LDR(T1,T2); LDR(T1); cout<<endl; return 0;}
1 0
- 合并二叉排序树
- 合并二叉排序树
- 合并两个二叉排序树(二叉查找树)到一个数组中
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- Vertex Texture Fetch 顶点纹理拾取
- 一个Android Service小例子
- LeetCode--Implement Stack using Queues
- 基于HTML5 Canvas绘制的支持手势缩放的室内地图
- Servlet 工作原理解析
- 合并二叉排序树
- HDU2032---杨辉三角
- android输入判定
- 如何在程序中预留一段固定的虚拟地址空间
- 【XVI Japan】Marching Course(图论,最优解)
- android测试之四:Android设备上的Benckmark测试概述
- PostgreSQL EXPLAIN ANALYSE 分析SQL
- iOS开发之旅--本地通知的发送与取消
- spring配置各层所在的位置