在二元樹中找出和為某一值的所有路徑

2021-06-09 07:39:36 字數 1429 閱讀 2759

在二元樹中找出和為某一值的所有路徑

題目:輸入乙個整數和一棵二元樹。

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

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

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

10   

/ \   

5 12   

/ \   

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

二元樹節點的資料結構定義為:

struct binarytreenode // a node in the binary tree

;解析:

建樹依然建立二元查詢樹,然後用深搜,用乙個path陣列把結點的值儲存起來。用深搜列印路徑比較方便。沒有什麼特殊和很難的地方。

這裡需要注意的是:這個系列中我在系列(一)中上傳的pdf檔案裡題目4的圖形沒對,可能會有誤導。樹的形狀應該是

10

/ \
5  12
/ \
4   7
最後,依然貼**吧!

/*

* problem_4.cpp

* 在二元樹中找出和為某一值的所有路徑

*  created on: 2012-8-28

*      author: administrator

*/#include

struct

binarytreenode 

}; #define m 100

intpath[m],top=-1; 

bool

addnode(binarytreenode **root,

intvalue)else

if(value<(*root)->data)else

}else

return

true

; } /**

* */

void

search(binarytreenode *cur,

intsum,

int&s) 

printf("\n"

); } 

if(sum+cur->data>=s) 

if(cur->pleft!=null) 

search(cur->pleft,sum+cur->data,s); 

if(cur->pright!=null) 

search(cur->pright,sum+cur->data,s); 

--top; 

} int

main(); 

binarytreenode *root=null; 

for(

inti=0;i<5;i++) 

inta=22; 

search(root,0,a); 

return

0; } 

在二元樹中找出和為某一值的所有路徑

4.在二元樹中找出和為某一值的所有路徑 題目 輸入乙個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。列印出和與輸入整數相等的所有路徑。例如 輸入整數22和如下二元樹 10 5 12 4 7則列印出兩條路徑 10,12和10,5,7。c codes as belo...

在二元樹中找出和為某一值的所有路徑

題目 輸入乙個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。列印出和與輸入整數相等的所有路徑。例如 輸入整數22和如下二元樹 10 5 12 4 7 則列印出兩條路徑 10,12和10,5,7。此方法用了雙向鍊錶來儲存路徑,當然也可以用容器vector來構造佇列...

在二元樹中找出和為某一值的所有路徑

1.題目 在二元樹中找出和為某一值的所有路徑 題目 輸入乙個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。列印出和與輸入整數相等的所有路徑。例如 輸入整數22和如下二元樹 10 5 12 4 7則列印出兩條路徑 10,12和10,5,7。二元樹節點的資料結構定義...