ZBLOG

#include using namespace std; template class BiNode { public: T data; BiNode* parent; BiNode* lchild; BiNode* rchild; }; template class BiTree { public: void Create(BiNode*& R, T data[], int i, int n);...

你的代码有一些问题。在中序遍历、后序遍历和主函数中,你调用了错误的递归函数名。应该分别调用InOrder、PostOrder和PreOrder来实现正确的遍历顺序。以下是修改后的代码:

#include<iostream>
using namespace std;

template<class T>
class BiNode
{
public:
	T data;
	BiNode<T>* parent;
	BiNode<T>* lchild;
	BiNode<T>* rchild;
};

template<class T>
class BiTree
{
public:
	void Create(BiNode<T>*& R, T data[], int i, int n); // 创建二叉树
	void Release(BiNode<T>* R); // 释放二叉树

	BiNode<T>* root; // 根节点

	BiTree(T data[], int n); // 构造函数
	void PreOrder(BiNode<T>* R); // 前序遍历
	void InOrder(BiNode <T>* R); // 中序遍历
	void PostOrder(BiNode<T>* R); // 后序遍历

	~BiTree(); // 析构函数
};

template<class T>
BiTree<T>::BiTree(T data[], int n)
{
	Create(root, data, 1, n);
}

template<class T>
void BiTree<T>::Create(BiNode<T>*& R, T data[], int i, int n) // i表示位置,从1开始
{
	if (i <= n && data[i - 1] != 0)
	{
		R = new BiNode<T>; // 创建根节点

		R->data = data[i - 1];
		R->lchild = R->rchild = NULL;
		Create(R->lchild, data, 2 * i, n); // 创建左子树

		Create(R->rchild, data, 2 * i + 1, n); // 创建右子树
	}
}

// 前序遍历
template<class T>
void BiTree<T>::PreOrder(BiNode<T>* R)
{
	if (R != NULL)
	{
		cout << R->data; // 访问节点
		PreOrder(R->lchild);
		PreOrder(R->rchild);
	}
}

// 中序遍历
template<class T>
void BiTree<T>::InOrder(BiNode<T>* R)
{
	if (R != NULL)
	{
		InOrder(R->lchild);
		cout << R->data; // 访问节点
		InOrder(R->rchild);
	}
}

// 后序遍历
template<class T>
void BiTree<T>::PostOrder(BiNode<T>* R)
{
	if (R != NULL)
	{
		PostOrder(R->lchild);
        PostOrder(R->rchild);
        cout << R->data; // 访问节点
    }
}

int main()
{
	int n = 5;
	int data[5] = {1, 2, 3, 4, 5};
	BiTree<int> tree(data, n);

	cout << "In Order: ";
	tree.InOrder(tree.root);

	return 0;
}

这段代码创建了一个具有给定数据的二叉树,并通过中序遍历方式打印出来。你可以根据需要进行修改和扩展。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=14390

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?