佇列&棧//二叉樹的中序遍歷
阿新 • • 發佈:2018-11-13
給定一個二叉樹,返回它的中序 遍歷。
示例:
輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [1,3,2]
進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?
/** * 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; inorder(root,res); return res; } void inorder(TreeNode *root, vector<int>& res){ if(!root) return ; if(root->left) inorder(root->left,res); res.push_back(root->val); if(root->right) inorder(root->right,res); } };
/** * 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; stack<TreeNode*> s; TreeNode *p = root; while(!s.empty()||p){ if(p){ s.push(p); p = p->left; }else{ TreeNode *t = s.top(); s.pop(); res.push_back(t->val); p = t->right; } } return res; } };