有了第一題作為基礎,這一題寫起來也相當簡單。只是搜尋的時候呢,可以剪枝一下。這個是搜尋的技巧,用多了就自然有這個習慣了!
建樹依然建立二元查詢樹,然後用深搜,用乙個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。二元樹節點的資料結構定義...