Tag: 二叉树二

删除二叉搜索树中的最小值

我写了这个,不知怎的,它最终删除了我在树上的所有左侧不仅是最左边的叶子。 我找不到我的错误,有人可以帮忙吗? struct Node *delMin(struct Node **root) { struct Node *current = *root; struct Node *b4Current; while ((current->m_ls) == NULL) { b4Current = current; current = current->m_ls; } if ((current->m_rs) == NULL) { b4Current->m_ls = 0; free(current); } else { b4Current->m_ls = current->m_rs; free(current); } return *root; }

以特定格式图打印二进制搜索树。 在c

我需要打印一个二进制搜索树,它应该看起来像一棵树意味着如果我有一个5,6,7的树,打印function将打印它像例1 : insert 5 insert 6 insert 7 Tree is: 5 6 7 现在假设一棵树是4,3,7结果应该像例子2 : insert 4 insert 3 insert 7 tree is: 4 3 7 有一个限制:它应该递归地完成。 这是我尝试用以下方法解决此问题的代码: void PrintTabs(int n) { if(n==0) { return; } else { printf(“\t”); PrintTabs(–n); } } void PrintTree(BST* root, int level) { if (root==NULL) { return; } PrintTree(root->Right,++level); PrintTabs(level); […]

C二叉搜索树实现 – 插入

我正在尝试创建一个程序,该程序将单词列表作为输入,并将它们分类到二叉树中,以便允许它们被找到,例如像字典。 这是我到目前为止所做的,但是使用newEl -> el = input;得到了分段错误newEl -> el = input; 我知道这是因为当第一次创建树时,它试图指向一个NULL el,但我不确定改进我的代码的最佳方法是什么。 有人有主意吗? 谢谢。 struct node *tra(struct node * start, Type input) { struct node * thisNode = start; if (thisNode == NULL) Type current = thisNode -> el; if (strcmp(input, current) > 0) return tra(thisNode -> right, input); else if (strcmp(input, current) left, input); […]

在二叉树中查找共同的祖先

我在一次采访中向我询问了这个问题:我有一个二叉树,我必须找到该树的两个随机节点的共同祖先(父)。 我也得到了一个指向根节点的指针。 我的回答是: 分别遍历两个节点的树,直到到达预期的节点。 遍历时并行存储元素和链接列表中的下一个地址。 然后我们有两个链接列表。 因此,尝试比较两个链表,两个链表中的最后一个公共节点是父列表。 我认为这个解决方案是正确的,如果我错了,请纠正我。 如果这个解决方案是正确的,我可能知道这是这项任务的唯一更好的解决方案还是有比这更好的解决方案!