簡體   English   中英

二叉樹級訂單遍歷LeetCode

[英]Binary Tree Level Order Traversal LeetCode

這個問題來自LeetCode。 問題是要找到樹最后一級的最左側節點。 我通過保留一個額外的指針來跟蹤每個級別的第一個元素(當然將是最左邊的元素),使用簡單的級別順序遍歷進行了嘗試。

雖然代碼在我的機器上運行得很好。 它在leetcode判斷器中顯示了不同的輸出。 這是我的代碼

int findBottomLeftValue(TreeNode* root) {
queue<TreeNode*>q;
q.push(root);
q.push(NULL);
TreeNode*first;

while(!q.empty())
{
   TreeNode*temp = q.front();
   q.pop();
   if(temp==NULL)
   {
     if(q.front()!=NULL)
       first = q.front();
     if(!q.empty())
        q.push(NULL);
    }
    else
    {
      if(temp->left)
      {
        q.push(temp->left);
      }
      if(temp->right)
      {
         q.push(temp->right);
      }
     }
    }
    return first->val;
}

有關問題的詳細分析,請訪問https://leetcode.com/problems/find-bottom-left-tree-value/#/description

對於給定的測試用例[2,1,3],我的代碼給出的輸出為0,而正確的輸出為1。

任何幫助表示贊賞。

這一點:

  if(q.front()!=NULL)

您不知道隊列中是否有任何內容。 您應該測試沃思q.empty()使用前q.front() 因此,您的程序表現出不確定的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM