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

    题目描述

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

    解题思路

    基本路线仍未进行二叉树遍历,只不过在路过一个节点时需要对该节点走过的路径长度进行统计。

    C++代码实现:

    /*
    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> > FindPath(TreeNode* root,int expectNumber) {
            vector<vector<int> > result; 
            if (root==NULL){
                  return result;
              }
            int alreadyNum=0;
            vector<int> path;
            findsubway(result,path,root,expectNumber,alreadyNum);
            return result;
        }
        void findsubway(vector<vector<int> >& result,vector<int>& path,TreeNode* root,int expectNumber,int& alreadyNum){
            alreadyNum+=root->val;
            path.push_back(root->val);
            //判断是否是叶子节点
            bool isLeaf=(root->left==NULL)&& (root->right==NULL);
            if(isLeaf){
                if(alreadyNum==expectNumber){
                    vector<int> tmp(path);
                    //是满足要求的路径,存入
                    result.push_back(tmp);
                }
            }else{
                //如果遇见当前节点路径已经比期望值要大,则跳过此子树
                if(alreadyNum<expectNumber){
                    if(root->left!=NULL){
                        findsubway(result,path,root->left,expectNumber,alreadyNum);    
                    }
                    if(root->right!=NULL){
                        findsubway(result,path,root->right,expectNumber,alreadyNum);    
                    }   
                }
            }
            alreadyNum-=root->val;
            path.pop_back();
        }
    };
  • 相关阅读:
    【从零开始学Spring笔记】Spring学习路线
    【从零开始学Java笔记】目录
    【超详细全过程】安装IntelliJ IDEA下载
    【超详细全过程】JavaEE 开发环境安装全过程(jdk+tomcat+eclipse)
    【超详细全过程】安装MySQL+Navicat
    Eclipse更新maven项目仓库依赖
    变量
    二进制
    JVM虚拟机查找类文件的顺序
    JRE、JDK概述
  • 原文地址:https://www.cnblogs.com/fancy-li/p/11625606.html
Copyright © 2011-2022 走看看