18 二叉樹中和為某一值的路徑

2022-05-03 06:36:07 字數 898 閱讀 9777

/*

二叉樹中和為某一值的路徑

題目:輸入乙個二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑,

從樹到根結點開始往下一直到葉結點所經過的結點形成一條路徑,二叉樹結點定義如下。

strcut binarytreenode

;從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。

列印出和與輸入整數相等的所有路徑。

例如 輸入整數22和如下二元樹

10   

/ \   

5  12   

/ \    

4    7

則列印出兩條路徑:10, 12和10, 5, 7。

先序遍歷樹即可得到結果。

到達乙個節點之後計算當前節點和sum的和,如果為target,輸出路徑返回,如果大於target,則直接返回,如果小於,則將當前節點的值入棧,更新sum的值,繼續遍歷,遍歷完成之後,也就是從當前節點返回的時候,將其從棧中彈出,更新sum

#include "

stdafx.h

"#include

#include

using

namespace

std;

struct

treenode

;void createtree(treenode*&proot) }

void printpath(treenode* proot, int sum, const

inttarget)

else

if(sum + proot->data > target)//

如果大於目標值,則返回

else

//如果小於,則入棧

}int

main()

二叉樹中和為某一值的路徑

include include using namespace std struct node void find path node r,int exceptedsum,vector path,int cursum node buildbtree int a,int i void preorder...

二叉樹中和為某一值的路徑

要輸出所有的路徑,必須額外用乙個棧來儲存當前路徑資訊。當訪問到節點a時,節點a的資訊要在訪問a的左右子樹時用到,因而,該資訊必須在遍歷a的左右子樹前加入到棧中,而在遍歷完a的左右子樹後從棧中移除。每訪問乙個節點,就計算當前路徑值 可直接利用父節點的路徑值 當其等於給定值且當前節點是葉子節點時,就列印...

二叉樹中和為某一值的路徑

面試題25 二叉樹中和為某一值的路徑 struct binarytreenode int value binarytreenode pleft binarytreenode pright 分析 用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結...