1. 程式人生 > >尋找二叉樹中長度為k的路徑(根節點到葉子節點)

尋找二叉樹中長度為k的路徑(根節點到葉子節點)

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <vector> 
using namespace std;

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<int> Path;
		vector<vector<int> > Result;
		FindPath(root, expectNumber, &Path, &Result);
		return Result;
    }
	void FindPath(TreeNode* root, int expectNumber, vector<int>* Path, vector<vector<int> >* Result) {
		if (root == NULL) {
			return;
		}
		Path->push_back(root->val);
		if (root->left == NULL && root->right == NULL) {
			int result = 0;
			for (vector<int>::iterator it = Path->begin(); it != Path->end(); it++) {
				result += *it;
			}
			if (result == expectNumber) {
				Result->push_back(*Path);
			}
			Path->erase(Path->end() - 1);
			return;
		}
		FindPath(root->left, expectNumber, Path, Result);
		FindPath(root->right, expectNumber, Path, Result);
		Path->erase(Path->end() - 1);
		return;
	}
};

int main(void)
{
	Solution s;
	TreeNode p0(10), p1(5), p2(12), p3(4), p4(7);
	p0.left = &p1;
	p0.right = &p2;
	p1.left = &p3;
	p1.right = &p4;
	vector<vector<int> > result;
	result = s.FindPath(&p0, 22);
	return 0;
}

相關推薦

尋找長度k路徑節點葉子節點

#include <iostream> #include <algorithm> #include <cstdlib> #include <vector> using namespace std; struct TreeN

尋找的最低公共祖先結點----LCA(Lowest Common Ancestor )問題遞歸

求解 mon etl 轉換成 right push_back 問題 off == 轉自 劍指Offer之 - 樹中兩個結點的最低公共祖先 題目: 求樹中兩個節點的最低公共祖先。 思路一: ——如果是二叉樹,而且是二叉搜索樹,那麽是可以找到公共節點的。 二叉搜索樹都是排序

《程式設計師面試金典》--尋找兩個節點的第一個公共祖先三種情況

/**************************************************************************************************

問題——尋找兩個節點的最近公共祖先

此題大概分為3種情況: 1、節點中無parent,但提供了root (1)、此種情況又分為兩種,開闢空間,使用容器來儲存路徑,將其轉換為求連結串列公共節點的問題,時間複雜度為O(N),空間複雜度為O(N) (2)、不開闢空間,在節點的左右子樹上尋找兩個節點

6_44_x的節點的子的深度

#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct node {

深度以及尋找某一節點

求二叉樹的深度依然用的是二叉樹遞迴的特性。二叉樹的深度就是你根節點的這一層加上他左孩子或者右孩子中深度大的哪一個,同樣這也能被劃分為子問題。 size_t BTreeDepth(BTNode* roo

7-8 輸出x的節點的所有祖先

//輸出二叉樹中值為x的節點的所有祖先 #include "btree.cpp" bool ancestor(BTNode *b,ElemType x) { if (b==NULL) return false; else if (b->lchild!=NULL

尋找兩個節點的最近的公共祖先——迅雷筆試歸來

      迅雷的筆試可真讓人煎熬啊,題量很大,而且考試時間是三個小時。不過迅雷的題目質量很高,既考查了基礎知識又不乏高難的資料結構和演算法題目。下面和大家分享兩道演算法程式設計題,程式碼沒有在編譯器上除錯,可能會出現一點小bug,感興趣的朋友可以編譯除錯一下。 題目1:將

的最大路徑和 · Binary Tree Maximum Path Sum

一句話 bsp roo binary pac tree 路徑 num val [抄題]: [思維問題]: [一句話思路]: 用兩次分治。 [輸入量]:空: 正常情況:特大:特小:程序裏處理到的特殊情況:異常情況(不合法不合理的輸入): [畫圖]: 先root-any左右各一

124. 的最大路徑

sig info truct tdi maximum vector root value cti 通過遞歸,判斷以當前節點為根的樹是否為最大值,然後取當前節點單條路徑的最大值給父節點調用。 #include<iostream> #include <

【多次過】Lintcode 94. 的最大路徑

給出一棵二叉樹,尋找一條路徑使其路徑和最大,路徑可以在任一節點中開始和結束(路徑和為兩個節點之間所在路徑上的節點權值之和) 樣例 給出一棵二叉樹: 1 / \ 2 3 返回 6 解題思路: 利用分治法 解決問題 需要

Leetcode 124 的最大路徑遞迴

給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例 1: 輸入: [1,2,3] 1 / \ 2 3 輸出: 6 示例 2:

[Swift]LeetCode124. 的最大路徑和 | Binary Tree Maximum Path Sum

Given a non-empty binary tree, find the maximum path sum. For this problem, a path is defined as any sequence of nodes from some starting node t

leetcode 24 的最大路徑

給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例 1: 輸入: [1,2,3] 1 / \ 2 3 輸出: 6 示例 2:

124.的最大路徑

給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例 1: 輸入: [1,2,3] 1 / \ 2 3 輸出: 6 示例 

【LeetCode】#124的最大路徑和(Binary Tree Maximum Path Sum)

【LeetCode】#124二叉樹中的最大路徑和(Binary Tree Maximum Path Sum) 題目描述 給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例

LeetCode-124.的最大路徑相關話題:深度優先

給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例 1: 輸入: [1,2,3] 1 / \ 2 3 輸出: 6 示例 2: 輸入:

Leetcode 124.的最大路徑

124.二叉樹中的最大路徑和 給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例 1: 輸入: [1,2,3]   1 / \ 2 3   輸出:

騰訊//的最大路徑

給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例 1: 輸入: [1,2,3] 1 / \ 2 3 輸出: 6 示例

Leetcode 124:的最大路徑超詳細的解法!!!

給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例 1: 輸入: [1,2,3] 1 / \ 2 3 輸出: 6 示例 2