真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

由二叉樹的前序和中序如何得到二叉樹的后序呢?

由二叉樹的前序和中序如何得到二叉樹的后序呢?

在山城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,山城網(wǎng)站建設(shè)費(fèi)用合理。

首先得明白什么是前序、中序、后序。

二叉樹前序:遍歷順序?yàn)?,根?jié)點(diǎn)、左子樹、右子樹;中序:遍歷順序?yàn)?,左子樹、根?jié)點(diǎn)、右子樹;后序:遍歷順序?yàn)?,左子樹、右子樹、根?jié)點(diǎn)

可以發(fā)現(xiàn),二叉樹前序中的第一個(gè)節(jié)點(diǎn)為樹的根節(jié)點(diǎn)root,然后找出root在中序里面的位置,就可以把前序和中序分別劃分為左、右子樹兩個(gè)部分,然后遞歸調(diào)用即可。

由二叉樹的前序和中序如何得到二叉樹的后序呢?

#include
using namespace std;
template
struct BinaryTreeNode
{
	T _data;
	BinaryTreeNode* _left;
	BinaryTreeNode* _right;
	BinaryTreeNode(const T& x)
		:_data(x)
		, _left(NULL)
		, _right(NULL)
	{}
};
template
class BinaryTree
{
protected:
	BinaryTreeNode* _root;
protected:
	void _PreOrder(BinaryTreeNode* root)
	{
		if (root != NULL)
		{
			cout << root->_data << " ";
			_PreOrder(root->_left);
			_PreOrder(root->_right);
		}
		return;
	}
	BinaryTreeNode* _CreateBinary(char* preOrder, char* inOrder, int length)
	{
		BinaryTreeNode* root = NULL;
		if (length == 0)
			return NULL;
		int tmp = *preOrder;
		int index = 0;
		while (index < length&&inOrder[index] != tmp)
			index++;
		if (index < length)
		{
			root = new BinaryTreeNode(tmp-'0');
			root->_left = _CreateBinary(preOrder + 1, inOrder,index);
			root->_right = _CreateBinary(preOrder + index + 1, inOrder + index + 1, length - index - 1);
		}
		return root;
	}
	void _Clear(BinaryTreeNode* root)
	{
		if (root)
		{
			_Clear(root->_left);
			_Clear(root->_right);
			delete root;
		}
	}
public:
	BinaryTree()
		:_root(NULL)
	{}
	~BinaryTree()
	{
		_Clear(_root);
		_root = NULL;
	}
	void  PreOrder()
	{
		_PreOrder(_root);
		cout << endl;
	}
	void CreateBinaryTree(char* preOrder, char* inOrder)
	{
		int length = strlen(preOrder);
		_root = _CreateBinary(preOrder, inOrder,length);
	}
};
void Test1()
{
	char* preOrder = "12473568";
	char* inOrder = "47215386";
	BinaryTree bt;
	bt.CreateBinaryTree(preOrder, inOrder);
	bt.PreOrder();
}

由二叉樹的前序和中序如何得到二叉樹的后序呢?


名稱欄目:由二叉樹的前序和中序如何得到二叉樹的后序呢?
分享網(wǎng)址:http://weahome.cn/article/jcshjc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部