91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-01 07:35:27 來源:網絡 閱讀:430 作者:小止1995 欄目:編程語言

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

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

二叉樹前序:遍歷順序為,根節點、左子樹、右子樹;中序:遍歷順序為,左子樹、根節點、右子樹;后序:遍歷順序為,左子樹、右子樹、根節點

可以發現,二叉樹前序中的第一個節點為樹的根節點root,然后找出root在中序里面的位置,就可以把前序和中序分別劃分為左、右子樹兩個部分,然后遞歸調用即可。

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

#include<iostream>
using namespace std;
template<class T>
struct BinaryTreeNode
{
	T _data;
	BinaryTreeNode* _left;
	BinaryTreeNode* _right;
	BinaryTreeNode(const T& x)
		:_data(x)
		, _left(NULL)
		, _right(NULL)
	{}
};
template<class T>
class BinaryTree
{
protected:
	BinaryTreeNode<T>* _root;
protected:
	void _PreOrder(BinaryTreeNode<T>* root)
	{
		if (root != NULL)
		{
			cout << root->_data << " ";
			_PreOrder(root->_left);
			_PreOrder(root->_right);
		}
		return;
	}
	BinaryTreeNode<T>* _CreateBinary(char* preOrder, char* inOrder, int length)
	{
		BinaryTreeNode<T>* 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<T>(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<T>* 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<int> bt;
	bt.CreateBinaryTree(preOrder, inOrder);
	bt.PreOrder();
}

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋城| 乡宁县| 都安| 隆子县| 会同县| 秀山| 铁力市| 射阳县| 石楼县| 东乌珠穆沁旗| 株洲县| 云阳县| 博乐市| 庄浪县| 饶河县| 长岭县| 抚松县| 巴楚县| 连云港市| 乐昌市| 交口县| 犍为县| 兖州市| 黄浦区| 富宁县| 茂名市| 昌黎县| 梅州市| 锦屏县| 阿巴嘎旗| 保康县| 德格县| 峨边| 呼和浩特市| 神池县| 苍南县| 宜良县| 盐源县| 江川县| 邹城市| 蒙城县|