二分搜索树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;
		}
	} 
	
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值