非递归实现二叉树的前、中、后序遍历

二叉树的前中后序遍历

  • 二叉树的前序遍历
    • 题目描述
    • 题目分析
    • 代码实现
  • 二叉树的中序遍历
    • 题目描述
    • 题目分析
    • 代码实现
  • 二叉树的后序遍历
    • 题目描述
    • 题目分析
    • 代码实现

二叉树的前序遍历

题目链表:二叉树的前序遍历

题目描述

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
非递归实现二叉树的前、中、后序遍历_第1张图片

题目分析

非递归实现二叉树的前序遍历,这里可以先定义一个栈来存放给个节点。前序遍历的顺序是根左右,因此根据栈的后进先出原则,可以先将各个节点入栈,然后依次取出栈顶元素,将其再依次出栈,并遍历右子树中的节点。具体代码实现如下:

代码实现

vector<int> preorderTraversal(TreeNode* root) 
{
   
	vector<int> ret;
	stack<TreeNode*> st;
	TreeNode* cur = root;
	while (cur || !st.empty())
	{
   
		while (cur

你可能感兴趣的:(C++,C语言,数据结构,链表,leetcode)