94. Binary Tree Inorder Traversal

来源:互联网 发布:java mvc框架 编辑:程序博客网 时间:2024/06/05 09:46

1、题目描述

输入一个二叉树,返回它的中序遍历。


2、思路

way 1: Recursive Solution

way 2:Iterative Solution

声明一个stack,把根节点放进去,把根节点的左节点放入,循环这个过程,知道左节点是NULL。

把stack顶的节点root取出,把节点数值放入ans,若root的右节点非NULL,把右节点放入stack,把右节点的左节点放入stack,

循环这个过程。

重复上述过程,直到stack为空。


3、代码

递归法:略。

    vector<int> inorderTraversal(TreeNode* root) {        vector<int> ans;        stack<TreeNode*> s;        while(root){            s.push(root);            root = root->left;        }        while(!s.empty()){            root = s.top();            s.pop();            ans.push_back(root->val);            if(root->right){                root  = root->right;                while(root){                    s.push(root);                    root = root->left;                }            }        }        return ans;    }    /*vector<int> inorderTraversal(TreeNode* root) {        vector<int> ans;        stack<TreeNode*> s;        while(root||!s.empty()){            if(root){                s.push(root);                root=root->left;            }            else{                root = s.top();                s.pop();                ans.push_back(root->val);                root=root->right;            }        }        return ans;    }*/