二分搜索树4 深度优先遍历

对于二分搜索树来说,中序遍历输出的顺序是从小到大的

特点:遍历完左右节点后才遍历自身,可以应用到释放二叉搜索树的内存上

实现

//定义一棵二分搜索树 
class BST{
private: 
	//树的一个节点定义 
	struct Node{
		Key key;
		Value value;
		Node* left;//左孩子 
		Node* right;//右孩子 
		Node(Key key, Value value) //构造函数 
		{
			this->key=key;
			this->value=value;
			this->right=this->left=NULL;
		} 
		Node(Node* node) //构造函数 
		{
			this->key=node->key;
			this->value=node->value;
			this->right=node->right;
			this->left=node->left;
		} 
	}; 
	Node* root;//树的根节点
	int count;//树的节点数
public:
	BST()
	{
		count=0;
		root=NULL;
	}
	int size()
	{
		return count;
	}	
	bool isEmpty()
	{
		return count==0;
	}
	
	//前序遍历 自己/左/右 
	void preOrder()
	{
		preOrder(root);
	} 
	//中序遍历 左/自己/右 
	void inOrder()
	{
		inOrder(root);
	} 
	//后序遍历 左/右/自己 
	void postOrder()
	{
		postOrder(root);
	} 
	
private:
	//前序遍历
	void preOrder(Node* node)
	{
		if(node!=NULL)
		{
			cout<<node->key<<endl;
			preOrder(node->left);
			preOrder(node->right); 
		}
	} 
	//中序遍历
	void inOrder(Node* node)
	{
		if(node!=NULL)
		{
			inOrder(node->left);
			cout<<node->key<<endl;
			inOrder(node->right);
		}
	} 
	//后序遍历
	void postOrder(Node* node)
	{
		if(node!=NULL)
		{
			postOrder(node->left);
			postOrder(node->right);
			cout<<node->key<<endl;
		}
	} 
	
};
发布了86 篇原创文章 · 获赞 0 · 访问量 4055

猜你喜欢

转载自blog.csdn.net/qq_31965925/article/details/105695855
今日推荐