給定一個二叉樹,返回它的中序?遍歷。
示例:
輸入: [1,null,2,3]
? ?1
? ? \
? ? ?2
? ? /
? ?3輸出: [1,3,2]
進階:?遞歸算法很簡單,你可以通過迭代算法完成嗎?來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/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:vector<int> inorderTraversal(TreeNode* root) {if(!root) return {};vector<int> res;stack<TreeNode *> st;TreeNode *p = root;while(!st.empty() || p){while(p){st.push(p);p = p->left;}p = st.top();st.pop();res.push_back(p->val);p = p->right;}return 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;solution(root, res);return res; }void solution(TreeNode *root, vector<int> &res){if(root == nullptr) return;solution(root->left, res);res.push_back(root->val);solution(root->right, res);}
};
?