二叉树的基本操作 题目编号:462 您所在的位置:网站首页 输出二叉树的前序遍历的逆序 二叉树的基本操作 题目编号:462

二叉树的基本操作 题目编号:462

2024-07-07 16:19| 来源: 网络整理| 查看: 265

题目描述

设计二叉树类,能够对二叉树进行先序、中序、后序和层序遍历,遍历的操作为输出结点的值,设计主函数,输入一棵二叉树,按先序、中序、后序、层序的遍历顺序输出结点的值。二叉树的结点数不超过20。

输入描述

输入数据只有一组, 二叉树的结点均为一个数字, 数据为0代表当前结点为空。输入结点的值按照二叉树的先序遍历顺序, 比如输入:

1 2 4 0 0 5 0 0 3 0 6 0 0 ,0表示空,输入的数字之间由空格分隔。上述输入对应的二叉树如下图所示:

输出描述

输出先序、中序、后序和层序遍历二叉树得到的序列,各占一行,同一行的数字之间由空格分隔。

输入样例

1 2 4 0 0 5 0 0 3 0 6 0 0

输出样例

1 2 4 5 3 6 4 2 5 1 3 6 4 5 2 6 3 1 1 2 3 4 5 6 内存阀值:50240K 耗时阀值:5000MS

代码 #include using namespace std; struct BiNode { int data; BiNode *lchild,*rchild; }; class BiTree { public: BiTree () { root = Creat(); } ~BiTree() { Release(root); } void PreOrder() //前序遍历输出 { PreOrder(root); } void InOrder() //中序遍历输出 { InOrder(root); } void PostOrder() //后续遍历输出 { PostOrder(root); } void LevelOrder() { LevelOrder(root); } private: BiNode *Creat(); void Release(BiNode *bt); void PreOrder(BiNode *bt); void InOrder(BiNode *bt); void PostOrder(BiNode *bt); void LevelOrder(BiNode *bt); BiNode *root; }; void BiTree::PreOrder(BiNode *bt) { if(bt == NULL) { return; } else { cout InOrder(bt -> lchild); cout PostOrder(bt -> lchild); PostOrder(bt -> rchild); cout return; } Q[++rear] = bt; while(front != rear) { q = Q[++front]; cout rchild != NULL) Q[++rear] = q -> rchild; } } BiNode *BiTree::Creat() { BiNode *bt; int ch; cin >> ch; if(ch == 0) bt = NULL; else { bt = new BiNode; bt -> data = ch; bt -> lchild = Creat(); bt -> rchild = Creat(); } return bt; } void BiTree::Release(BiNode *bt) { if(bt == NULL) return; else { Release(bt -> lchild); Release(bt -> rchild); delete bt; } } int main() { BiTree B; B.PreOrder(); B.InOrder(); B.PostOrder(); B.LevelOrder(); return 0; }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有