q:輸入一顆二叉樹和乙個整數,列印出二叉樹中結點和為輸入整數的所有路徑。從樹的根結點開始到葉子節點所經過的結點形成一條路徑。結點定義如下:
struct binarytreenode
這個問題直白點就是二叉樹的遍歷,在遍歷的過程中要隨時記錄一些資料,在資料滿足一定條件時,做一些特定的動作。
我們很自然的想到二叉樹的三種遍歷,以先根(前序)遍歷來說,其遍歷的遞迴模板是:
void preorder(binarytreenode *root)
真對不同的要求visit()可以做不同的處理,這裡的要求是判斷當前的結點和是否等於給定的值,同時形成了一條路徑(為葉子結點),若是,則輸出這條路徑。
void findpath(binarytreenode *proot, int expectesum, int cursum)
std::cout << std::endl;
} if(proot->m_pleft)
findpath(proot->m_pleft,expectesum,cursum);
if(proot->m_pright)
findpath(proot->m_pright,expectesum,cursum);
path.pop_back();
}
25 二叉樹中和為某一值的路徑
題目描述 輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。典型的回溯法問題。void printpath binarytreenode root,int sum void getpath binarytree...
二叉樹中和為某一值的路徑 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...