zoukankan      html  css  js  c++  java
  • 剑指offer24-二叉树中和为某一值的路径

    题目描述

    输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

    思路:

    1,若根节点不为null,则先将其装入路径集合中。

    2,再进行判断,若其值与expectNumber相同,且左右子树为空,说明这条路径符合;

             若其值小于expectNumber,且左子树不为空,则以左子树和expectNumber-val(当前节点的值)为新的递归体,进行判断;

             若其值小于expectNumber,且右子树不为空,则以右子树和expectNumber-val(当前节点的值)为新的递归体,进行判断;

    3,注意需要返回上一个节点。

            

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:
        //存放最后要输出的所有路径集合
        vector<vector<int> > allPath;
        //存放当前正在遍历的路径
        vector<int> tempPath;
        
        vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
            if(root==NULL)
                return allPath;
            tempPath.push_back(root->val);
            
            if(root->val==expectNumber && root->left==NULL && root->right==NULL){
                allPath.push_back(tempPath);
            }
            if(root->val<expectNumber && root->left!=NULL)
                FindPath(root->left, expectNumber - root->val);
            if(root->val<expectNumber && root->right!=NULL)
                FindPath(root->right, expectNumber - root->val);
            //,返回上一个节点
            tempPath.pop_back();
            return allPath;
        }
    };
    //看了很多代码,思路几乎就上面一个
  • 相关阅读:
    ie下如果已经有缓存,load方法的效果就无法执行.的解决方法
    css公共样式
    pageX、pageY全兼容
    js滚动加载插件
    getComputedStyle()与currentStyle
    excel15个技巧
    XMLHttpRequest函数
    继承模式
    cookie函数
    jQuery添加删除元素
  • 原文地址:https://www.cnblogs.com/loyolh/p/12343066.html
Copyright © 2011-2022 走看看