0
点赞
收藏
分享

微信扫一扫

数据结构 中序遍历的堆栈实现法


(1)遇到一个节点,就把它压入栈,并去遍历它的左子节点

(2)如果左子节点存在,继续遍历下一个节点的左子节点,存在则入栈

(3)如果左子节点不存在 则出栈并显示数据 之后去遍历它的右子节点

(4)如果右子节点存在 则将右子节点入栈 然后重复(2) (3)操作

(5)如果右子节点不存在 则将下一个元素出栈 重复(4)操作


代码实现:


//中序遍历非递归实现
void BinaryTree::midOrderTravelsalNotD(TreeNode* node) {

	stack<TreeNode*> myStack;

	while (node || !myStack.empty())
	{
		while (node) {
			myStack.push(node);
			node = node->LChild;  //向左边遍历
		}

		if (!myStack.empty())    //如果数组不为空的话
		{
			auto temp = myStack.top();
			myStack.pop();   //弹出一个元素
			
			cout << temp->data << " ";
			free(temp);

			node = node->RChild;   //转向右子树
		}
	}
}




举报

相关推荐

0 条评论