Leetcode_94_Binary Tree Inorder Traversal

1908 단어 LeetCode
Given a binary tree, return the inorder traversal of its nodes’ values.
For example: Given binary tree {1,#,2,3}, 1 \ 2 / 3 return [1,3,2].
Note: Recursive solution is trivial, could you do it iteratively? 제목: 두 갈래 나무 한 그루를 주고 출력 중 차례대로 사고방식을 훑어보기;먼저 생각나는 것은 귀속이다. 그러나 그 note를 보고 비귀속으로 해결했다. 바로 창고 시뮬레이션 시스템의 창고로 중순으로 흐르는 비귀속은 쓰기가 쉽다. 내일 후순과 전순을 연구해 보자.갱: 없음
코드:
/** * 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> ans;
        GetAns(ans, root);
        return ans;
    }

    void GetAns(vector<int> &ans, TreeNode* root)
    {
        stack<TreeNode*> tree;
        TreeNode *p = root;
        while(p!=NULL||!tree.empty())
        {
            if(p!=NULL)
            {
                tree.push(p);
                p = p->left;
            }
            else
            {
                p = tree.top();
                tree.pop();
                ans.push_back(p->val);
                p = p->right;
            }
        }
    }
};

좋은 웹페이지 즐겨찾기