zoukankan      html  css  js  c++  java
  • 剑指offer-面试题34-二叉树中和为某一值的路径-二叉树遍历

    /*
    题目:
    	输入一颗二叉树和一个整数,打印从根节点到叶子节点中所有和为该整数的路径。
    */
    /*
    思路:
    	先序遍历,深度遍历。
    	从树根开始,记录路径之和,遍历到叶子节点,如果和为期望值,则输出。
    	回退节点,寻找下一个叶子节点,直到遍历完所有到达叶子节点的路径。
    */
    #include<iostream>
    #include<string.h>
    #include<algorithm>
    #include<cmath>
    #include<stdio.h>
    #include<vector>
    #include<stack>
    #include<queue>
    
    using namespace std;
    
    struct TreeNode {
    	int val;
    	struct TreeNode *left;
    	struct TreeNode *right;
    	TreeNode(int x) :
    			val(x), left(NULL), right(NULL) {
    	}
    };
    vector<vector<int>> res;
    vector<int> path;
    
    void FindPathCore(TreeNode* root,int expectNumber,int currentNumber){
        path.push_back(root->val);
        currentNumber += root->val;
        bool isLeaf = (root->left == nullptr && root->right == nullptr) ? true: false;
    
        if(currentNumber == expectNumber && isLeaf){
            res.push_back(path);
        }
        if(root->left != nullptr){
            FindPathCore(root->left,expectNumber,currentNumber);
        }
        if(root->right != nullptr){
            FindPathCore(root->right,expectNumber,currentNumber);
        }
        path.pop_back();
    }
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
    
        if(root == nullptr) return res;
        vector<int> path;
        int currentNumber = 0;
        FindPathCore(root, expectNumber, currentNumber);
        return res;
    }
    

       

  • 相关阅读:
    asp.net应用程序的生命周期和iis
    跨网页公布技术
    Java面试题:异常、静态变量
    js省市级联
    python基础之介绍
    Java学习(二)有关Tomcat的进一步理解与运用
    Java学习(一)环境的配置和软件的使用
    构造方法
    自言自语
    小小叹
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/11953711.html
Copyright © 2011-2022 走看看