二叉树级别顺序遍历 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.front()
之前,您应该测试沃斯q.empty()
。因此,您的程序表现出未定义的行为。
相关文章:
- 有什么方法可以遍历结构吗
- 在循环中按顺序遍历成员变量
- 遍历模板参数
- 在遍历处理程序的向量时注册和注销处理程序
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 遍历并行数组以确定C++中的最大数字
- 遍历顺序由 std::文件系统directory_iterator给出
- 遍历链表时的无限循环
- 遍历unordered_map向量
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 如何正确地推回然后遍历堆中对象的向量?
- 遍历二维数组的所有子数组
- 如何在可变参数模板函数中遍历可变参数元组?
- 避免在遍历 IShellItemArray 时出现代码重复
- 从特定键开始遍历地图
- 关于链表遍历和调试的困惑
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- 二叉树级别顺序遍历在leetcode中
- 二叉树级别顺序遍历 LeetCode