二叉树级别顺序遍历 LeetCode

Binary Tree Level Order Traversal LeetCode

本文关键字:遍历 LeetCode 顺序 二叉树      更新时间:2023-10-16

这个问题来自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.front() 之前,您应该测试沃斯q.empty()。因此,您的程序表现出未定义的行为。