gpt4 book ai didi

c - 我不明白 C 中二叉树中的函数

转载 作者:行者123 更新时间:2023-11-30 14:26:23 24 4
gpt4 key购买 nike

下面是向树中插入节点的代码示例。该示例取自http://cslibrary.stanford.edu/110/BinaryTrees.html问题是这样的:我对指针和内存有基本的了解,并且了解除了插入节点之外的整个事情。这是节点结构:

struct node { 
int data;
struct node* left;
struct node* right;
}

现在,在我提供的页面中,它说这种插入方法是为了避免按引用传递。因此,不要调用 insert(struct node** nodeptr, int some data); ,而是这样调用: nodeptr = insert(data int).所以我的问题是。我理解指针赋值的部分,即插入函数返回的指针被放入nodeptr。假设nodeptr是树的根,它如何影响指向新节点的某个节点。

struct node* insert(struct node* node, int data) 
{
// 1. If the tree is empty, return a new, single node
if (node == NULL)
{
return(newNode(data));
}
else
{
// 2. Otherwise, recur down the tree
if (data <= node->data)
{
node->left = insert(node->left, data);
}
else
{
node->right = insert(node->right, data);
}

return(node); // return the (unchanged) node pointer
}
}

最佳答案

如果没有其他节点连接到二叉树节点的 leftright 元素,则它们可以为 NULL。在这样的节点上,如果我们遍历到 NULL 叶子,那么我们会使用 newNode(data) 创建一个新节点。

关于c - 我不明白 C 中二叉树中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com