題目描述:
輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
典型的回溯法問題。
void printpath(binarytreenode* root, int sum)
void getpath(binarytreenode* root, int sum, vector
&path)
}if (root->left)
getpath(root->left, sum - root->val, path);
if (root->right)
getpath(root->right, sum - root->val, path);
// 返回父節點之前,刪除當前節點
path.pop_back();
}
二叉樹中和為某一值的路徑 25
輸入乙個二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。如上圖的二叉樹,當輸入根結點和乙個數值12的時候,就有兩條路徑 1 2 4 5 和 1 3 8 如果存在,就輸出上述路徑,如果沒有任何一條路徑滿足就不輸出路徑並提示 首先...
二叉樹中和為某一值的路徑
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的左右子樹後從棧中移除。每訪問乙個節點,就計算當前路徑值 可直接利用父節點的路徑值 當其等於給定值且當前節點是葉子節點時,就列印...