给定一个二叉树,返回它的中序 遍历。
示例:
输入: [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);}
};