首页 > 代码库 > [LeetCode] Binary Tree Inorder Traversal

[LeetCode] Binary Tree Inorder Traversal

Given a binary tree, return the inorder traversal of its nodes‘ values.

For example: Given binary tree {1,#,2,3},

   1         2    /   3

 

return [1,3,2].

Note: Recursive solution is trivial, could you do it iteratively?

/** * Definition for binary tree * 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;                TreeNode *p = root;        stack<TreeNode*> s;        while(p!=NULL || !s.empty()){                        while(p!=NULL){                s.push(p);                p=p->left;            }//end while                        if(!s.empty()){                p = s.top();                s.pop();                res.push_back(p->val) ;//刚开始定义res时,它是空的,则不能使用下标操作,只能有push_back()添加新元素                p = p->right;               }//end while         }//end while        return res;    }};