数据结构实验(C++实现):二叉树操作

本文介绍了一项数据结构实验,通过C++实现二叉树的创建和遍历。实验要求包括从完全二叉树的层次遍历字符串构建二叉树,并输出前序、中序、后序遍历以及结点数和树高;同时,从给定的前序和中序序列构建二叉树并输出后序和层次遍历序列。解决的关键点在于输出格式控制和不同序列构建二叉树的方法。
摘要由CSDN通过智能技术生成

实验要求:

  1. 输入一个完全二叉树的层次遍历字符串,创建这个二叉树,输出这个二叉树的前序遍历字符串、中序遍历字符串、后序遍历字符串、结点数目、二叉树高度(上述每一个结果独立一行显示)。
  2. 输入二叉树前序序列和中序序列(各元素各不相同),创建这个二叉树,输出该二叉树的后序序列、层次遍历。

(输出格式如下图所示

输出格式如图所示


实验难点:

  1. 输出格式控制(在下面的解法中运用一个全局变量commaFlag来控制逗号输出);
  2. 根据题目需求选择二叉树的描述方式,并制定二叉树类(下面的解法选择的是二叉树的链式描述,而且二叉树类中只包含必要的函数);
  3. 从层次序列构建二叉树,从前序序列和中序序列构建二叉树也是难点。

//my solution
#include <iostream>
#include <algorithm>
#include <string.h>
#include <queue>
#define stringLength 50
using namespace std;

//CommaFlag is used to judge whether a comma should be printed.
int commaFlag;

//linked binary tree
template<class T>
struct binaryTreeNode
{
   
	T element;
	binaryTreeNode<T>* leftChild, * rightChild;

	binaryTreeNode() {
    leftChild = NULL; rightChild = NULL; }
	binaryTreeNode(const T& theElement)
	{
   
		element = theElement;
		leftChild = NULL;
		rightChild = NULL;
	}
	binaryTreeNode(const T& theElement, binaryTreeNode<T>* theLC, binaryTreeNode<T>* theRC)
	{
   
		element = theElement;
		leftChild = theLC;
		rightChild = theRC;
	}
};

template<class T>
class binaryTree
{
   
public:
	//construct,destruct,copy_constrcut
	binaryTree() {
    root = NULL; treeSize = 0; }
	binaryTree(binaryTreeNode<T>* r, int size) {
    root = r; treeSize = size; }
	~binaryTree() {
    clear(); }

	//preorder,inorder,postorder,levelordr,size,height
	void preOrder() const {
    preOrder(root); }//前序遍历
	void inOrder() const {
    inOrder(root); }//中序遍历
	void postOrder() const {
    postOrder(root); }//后序遍历
	void levelOrder() const;//层次遍历
	void visit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值