Leetcode94. Binary Tree Inorder Traversal二叉樹的中序遍歷(兩種演算法)
阿新 • • 發佈:2019-02-05
給定一個二叉樹,返回它的中序 遍歷。
示例:
輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [1,3,2]
進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?
遞迴:
class Solution { public: vector<int> res; vector<int> inorderTraversal(TreeNode* root) { if(root == NULL) return res; if(root ->left != NULL) { inorderTraversal(root ->left); } res.push_back(root ->val); if(root ->right != NULL) { inorderTraversal(root ->right); } return res; } };
迭代:
class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode*> s; TreeNode *cur = root; while(!s.empty() || cur != NULL) { if(cur != NULL) { s.push(cur); cur = cur ->left; } else { cur = s.top(); s.pop(); res.push_back(cur ->val); cur = cur ->right; } } return res; } };