此功能如何工作?(BST递归)

宜兰·艾泽曼(WS)

找不到合适的标题,请原谅我

我正在尝试分析BST的递归函数,该函数返回1。

经过错误的计算后,我得到的返回值为0,我想了解我在这里做错了什么。

我们从这样调用函数main.cfunc_3(root, 9);

所以总和= 9

这是代码块:

int func_3(struct node* node, int sum)
 {
        if (node == NULL) 
              return(sum == 0);
        else 
        {
            int subSum = sum - node->data;
            return (func_3(node->left, subSum) ||  func_3(node->right, subSum));

         }
 }

这是BST: 在此处输入图片说明

我的计算: func(5,9)-> func3(3,4)-> func(1,1)->返回subTree = sum = 0。

sps

1如果存在(root node到a的leaf node)值总和等于的路径,则此函数返回sum

In your function call func_3(root, 9) in main, what you are trying to do is check if there is any path in your binary tree, such that the sum of values of all the nodes in that path is equal to 9.

There is such path, which is the leftmost path (5->3->1), so your function will return 1.

This is how it is returning 1. First call is

func_3(node, 9)

where node is pointing to root node of this tree, i.e. root node with value 5.

Here node is not null. So,

subSum = 9 - 5 = 4.

Next call is

func3(node, 4)

where node is pointing to node with value 3 (left child of node of previous call)

Here again node is not null, So,

subSum = 4 - 3 = 1

Next call is

func3(node, 1)

where node is pointing to node with value 1 (left child of node of previous call)

Here again node is not null, So,

subSum = 1 - 1 = 0

Next call is

func_3(node, 0)

where node is pointing to NULL (left child of node of previous call)

不过这一次nodeNULL,既然sum == 0是真实的,它会返回1,而这个返回值将返回所有的方式递归终于到main

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

此递归二进制代码功能如何工作?

来自分类Dev

如何递归应用此功能

来自分类Dev

此递归代码如何工作?

来自分类Dev

此递归二进制搜索如何工作?用于在bst中找到第k个最小的节点

来自分类Dev

此功能/变量如何工作?

来自分类Dev

快递:此功能如何工作?

来自分类Dev

此弹出功能如何工作?

来自分类Dev

此功能分配如何工作?

来自分类Dev

无退回功能-此功能如何工作?

来自分类Dev

无退回功能-此功能如何工作?

来自分类Dev

此递归SQL CTE如何工作?

来自分类Dev

Prolog-此置换功能如何工作?

来自分类Dev

如何修改此功能代码才能工作?

来自分类Dev

递归-此BST有什么区别?

来自分类Dev

您如何利用Swift功能来重构此递归函数?

来自分类Dev

谁能告诉我此函数的递归部分如何工作?

来自分类Dev

有人可以解释此递归如何工作吗?

来自分类Dev

如何最好地解释递归在复制 BST 而非节点而是其他树时的工作原理?

来自分类Dev

此主要功能实际上是如何工作的?

来自分类Dev

f1 =翻转常量映射。此功能如何工作?

来自分类Dev

此功能有什么作用?它是如何工作的?

来自分类Dev

BST节点删除功能在递归调用上失败

来自分类Dev

线性递归如何工作?

来自分类Dev

递归方法如何工作?

来自分类Dev

如何使chown递归工作?

来自分类Dev

如何使 DjangoTemplates 递归工作

来自分类Dev

如何重新实现此功能为尾递归或以较少的内存使用?

来自分类Dev

此递归如何重复自身?

来自分类Dev

如何使此阶乘函数递归?