树的三种遍历方式--模拟系统栈方式(通用)
LeetCode 144. 二叉树的中序遍历
题目描述:
给定一个二叉树,返回它的前序遍历。(非递归实现)
题目分析:
可以模拟系统栈,实现进栈、出栈操作,从而实现原递归的思想。定义两个状态:访问+输出。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
//采用模拟系统栈的情况进行实现,呈现出真是的入栈、出栈操作
vector<int>res;
if(root==NULL)
return res;
bool state=1; //这里state表示的状态,1的话是打印结点,2的话是访问下一个结点。
struct Commend
{
bool st;
TreeNode* p;
Commend(bool st,TreeNode *p):st(st),p(p)