1. 程式人生 > >Leetcode No.144 **

Leetcode No.144 **

ref 得到 中序 div tac preorder 系統 二叉樹遍歷 sta

給定一個二叉樹,返回它的 前序 遍歷。

示例:

輸入: [1,null,2,3]  
   1
         2
    /
   3 

輸出: [1,2,3]

如圖輸出為:ABDECF

技術分享圖片

解答:參考博客:http://www.cnblogs.com/grandyang/p/4146981.html
前序遍歷、中序遍歷、後序遍歷是一個系統性的二叉樹遍歷算法,分別在No.144、No.94、No.145。
本題依舊可以使用棧來處理。棧是先進後出,而前序遍歷的優先級是先左後右,故先壓棧右側指針,再壓棧左側指針。依次循環,最後會得到最左側值,最後得到最右側值,滿足前序遍歷的條件。

//144
vector<int> preorderTraversal(TreeNode* root)
{
    vector<int> res;
    if(root==NULL) return res;
    TreeNode* p;
    stack<TreeNode*> st;
    st.push(root);
    while(!st.empty())
    {
        p = st.top();
        st.pop();
        res.push_back(p->val);
        
if(p->right!=NULL) st.push(p->right); if(p->left!=NULL) st.push(p->left); } return res; }//144

Leetcode No.144 **