• 九度 题目1368:二叉树中和为某一值的路径



    和之前的一篇分析的结果一样。当须要枚举可能性的时候,使用DFS的方法进行搜索

    然后採用回溯的方法进行节点的输出。


    本题值得注意的两点是

    1:必须是叶子节点。中间节点不能够

    2:由于是有序的输出,所以。把节点交换一下。使得左子树小于又子树


    #include <stdio.h>
    #include <vector>
    using namespace std;
    struct Node
    {
        int value,lchild,rchild;
    }nodes[10010];
    vector<int> result;
    void dfs(int count,int sum,int i)
    {
        if(i==-1)
            return ;
        if(sum==count+nodes[i].value&&nodes[i].lchild==-1&&nodes[i].rchild==-1)
        {
            result.push_back(i);
            printf("A path is found:");
            for(int j=0;j<result.size();j++)
                printf(" %d",result[j]);
            printf("
    ");
            result.pop_back();
            return;
        }
        if(sum>count+nodes[i].value)
        {
            result.push_back(i);
            dfs(count+nodes[i].value,sum,nodes[i].lchild);
            dfs(count+nodes[i].value,sum,nodes[i].rchild);
            result.pop_back();
        }
    }
    int main()
    {
        int num,sum;
        //freopen("data.in","r",stdin);
        while(scanf("%d%d",&num,&sum)!=EOF)
        {
            result.clear();
            for(int i=1;i<=num;i++)
            {
                scanf("%d%d%d",&nodes[i].value,&nodes[i].lchild,&nodes[i].rchild);
                if(nodes[i].lchild>nodes[i].rchild)
                {
                    int tmp=nodes[i].lchild;
                    nodes[i].lchild=nodes[i].rchild;
                    nodes[i].rchild=tmp;
                }
            }
            printf("result:
    ");
            dfs(0,sum,1);
        }
        return 0;
    }
    /**************************************************************
        Problem: 1368
        User: vincent_ynh
        Language: C++
        Result: Accepted
        Time:30 ms
        Memory:1140 kb
    ****************************************************************/


  • 相关阅读:
    C# MATLAB混编(二)
    C# MATLAB混编(一)
    C#编程.循环的中断
    WPS 常用操作
    PowerDesigner 操作手册
    软件开发-零散问题
    代码优化
    layui 前端UI框架
    css 样式渲染
    linux 操作系统
  • 原文地址:https://www.cnblogs.com/llguanli/p/6951966.html
Copyright © 2020-2023  润新知