2020-09-25

二叉树的中序遍历(非递归)

思路:从根节点开始,往左走分两种情况1.有左孩子,则把它插入栈中,并向左走。2.没有左孩子,这时,代表以此时栈顶元素为根节点的树开始向右走,那么先输出栈顶元素,并删除栈顶元素。之后往右走一步。重复上述操作

class solution{
	public:
		vector<int> result;
	public:
		vector<int> Inorder_traversal(TreeNode *root)
		{
			if(root==null)
			 return;
		}
		
		stack<TreeNode*> Inorder_stack;
		TreeNode* p;
		p=root;
		while(p||!Inorder_stack.empty())
		{
			if(p)
			{
				Inorder_stack.push(p);
				p=p->left;
			}
			else
			{
				p=Inorder_stack.top();
				result.push_back(p->data);
				Inorder_stack.pop();
				p=p->right;
			}
			
		}
		return result;
		}

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页