首页 > 编程语言 >算法之禅-递归01

算法之禅-递归01

时间:2023-03-19 09:34:26浏览次数:42  
标签:Node arr 01 之禅 递归 int sumQ root public

构造树,并求每条路径和

第一步:构造树节点用到的类:

public class Node{
    public int Val{get;set;}
    public Node? LNode{get;set;}
    public Node? RNode{get;set;}

    public Node(int val)
    {
        this.Val = val;
    }
}

第二步构造树:

public static Node? BuildeTree(int[] arr,int li,int hi)
    {
        if (li > hi) return null;
        int mi = li + ((hi - li) >> 1);
        Node root = new Node(arr[mi]);
        root.LNode = BuildeTree(arr,li,mi-1);
        root.RNode = BuildeTree(arr,mi+1,hi);
        return root;
    }

第三步求路径和:

// 求路径和 递归
    public static Dictionary<int,int> GetSumPath(Node root, int sumQ, Dictionary<int,int> nodeSum)
    {
        // 保护机制
        if (root == null) return null;
        sumQ = sumQ + (root.Val);
            if (root.LNode == null && root.RNode == null) {nodeSum.Add(root.Val,sumQ);sumQ = sumQ - root.Val;}
        GetSumPath(root.LNode,sumQ,nodeSum);
        GetSumPath(root.RNode,sumQ,nodeSum);
        return nodeSum;
    }

运行代码:

int[] arr = {1,2,3,4,5,6,7};
var tree = TreeProject.BuildeTree(arr,0,arr.Length - 1);
var dic = new Dictionary<int,int>();
TreeSum.GetSumPath(tree,0, dic);
foreach(var item in dic)
{
    System.Console.WriteLine(  $"终结点名称:{item.Key} - 路径和:{item.Value } ");
}

学习反思:
1.算法学习还是要画图,只靠脑子想是不行的

 

 

标签:Node,arr,01,之禅,递归,int,sumQ,root,public
From: https://www.cnblogs.com/Insist-Y/p/17232470.html

相关文章

  • LINUX服务与配置随笔01
    1.理论知识1.1文件名后缀1.1.1作用是说明和注释一个文件的性质1.1.2与文件类型无关1.2常见的压缩文件后缀名1.2.1.gz......
  • b01lersCTF
    b01lersCTFWebwarmUp进去后只有一个"HelloWorld",F12查找信息发现debug.html文件,注意到该网址的路径都是base64编码过的debug.html->ZGVidWcuaHRtbA==访问/ZGVid......
  • [oeasy]python0111_字型码_字符字型编码_点阵字库_ascii演化
    编码进化回忆上次内容上次回顾了早期的英文字符点阵最小的3*5通用的5*7点阵字库逐渐规范化这些点阵字符的字型究竟是如何被存储的呢?......
  • 3.6 栈与递归
    递归的定义若一个对象部分包含它自己,或用自己给自己定义,则称这个对象是递归的。若一个过程直接地或间接调用自己,则称这个过程是递归的过程。例如:递归求n的阶乘long......
  • P2482 [SDOI2010] 猪国杀
    方法论这是一道复杂的模拟题。由于游戏规则的条目很多,我们需要仔细考虑程序的组织。否则,在编写程序的过程中极容易陷入停滞的状态(不知道下一步应该怎么做),或在发现程序出问......
  • NAS-bench-101
    0.摘要神经网络搜索近年来取得进步巨大,但是由于其需要巨大的计算资源,导致很难去复现实验。本文目标是通过引入NAS-Bench-101的方法来缓解以上问题。在NAS-Bench-101中,设......
  • 递归与回溯法
    递归 引入什么是递归?先看大家都熟悉的一个民间故事:从前有座山,山上有座庙,庙里有一个老和尚在给小和尚讲故事,故事里说,从前有座山,山上有座庙,庙里有一个老和尚在给小......
  • AGC012 题解
    chrislgjeztorAmledzaprofovelmizerdoscarmammeidhaalzengharkawymaynoxialgjeztorRupieillavasphotreywzidha[AGC012A]AtCoderGroupContest普及题......
  • 【洛谷】P5904 [POI2014]HOT-Hotels(长链剖分)
    原题链接题意给出一棵有\(n\)个点的树,求有多少组点\((i,j,k)\)满足\(i,j,k\)两两之间的距离都相等。\((i,j,k)\)与\((i,k,j)\)算作同一组。\(1\len\le10^5\)......
  • Why am I getting a "RETCODE : ZRC=0x801A006D=-2145779603=SQLZ_CA_BUILT" in the d
    IBMSupportWhyamIgettinga"RETCODE:ZRC=0x801A006D=-2145779603=SQLZ_CA_BUILT"inthedb2diag.log?Question&Answe......