Binary Tree Inorder Traversal
递归方法:
/** * 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: void _inorderTraversal(TreeNode* root,vector<int>& inorder){ if(root) { _inorderTraversal(root->left,inorder); inorder.push_back(root->val); _inorderTraversal(root->right,inorder); } } vector<int> inorderTraversal(TreeNode* root) { vector<int> inorder; _inorderTraversal(root,inorder); return inorder; } };
非递归方法:
class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int> inorder; stack<TreeNode*> nodes; TreeNode* p=root; while(p||!nodes.empty()) { while(p) { nodes.push(p); p=p->left; } if(!nodes.empty()) { p=nodes.top(); nodes.pop(); inorder.push_back(p->val); p=p->right; } } return inorder; } };