segmentation-fault - 为什么我的代码中存在分段错误,即从 BT 的叶节点创建 DLL?
问题描述
这是从二叉树的叶节点创建双向链表 (DLL) 的问题,我们还必须删除叶节点并返回 DLL 的头部。问题链接-https://practice.geeksforgeeks.org/problems/leaves-to-dll/1#
我正在使用堆栈使用中序遍历。当我得到一个叶节点时,将它添加到 DLL 然后删除节点。但是我遇到了分段错误。
我的代码:- Node * convertToDLL(Node *root) { if(root == NULL) return root;
stack<Node*> st; /* store nodes for Inorder traversal*/
Node *temp,*prev = NULL,*curr = root,*head; /* temp,pre will be current node and previous
node of DLL respectively, curr will be current node while travering BT. head will
store first node of DLL */
while(1)
{
while(curr)
{
st.push(curr);
curr = curr->left;
}
if(st.empty())
break;
curr = st.top(); st.pop();
if(curr->left == NULL && curr->right == NULL) // check for leaf node
{
temp = curr;
if(prev != NULL)
{
prev->right = temp;
temp->left = prev;
}
else {
temp->left = prev;
head = temp; // first node of DLL
}
prev = temp;
free(curr); // delete the leaf node
}
curr = curr->right;
}
temp->right = NULL;
return head;
}
解决方案
推荐阅读
- android - 在不征求用户许可的情况下开启 Android LE 扫描
- prolog - Prolog 错误参数未实例化
- python - python错误,ValueError:int()的无效文字,基数为10:''
- iframe - 是否可以在 Jest 测试中访问 iframe 内容
- python - 使用“包含”到小节内容时使用 jinja2 生成代码的问题
- node.js - nodejs web服务器中的类似电子的节点集成
- c++ - Having class inherit all operators of template type
- firebase - 将 Firebase 分析与 SwiftUI 结合使用
- php - php未定义单选按钮
- android - ionic cordova deepllink 未触发设备上的订阅