輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
演算法思路: 先序遍歷二叉樹,並用乙個vector模擬乙個棧,記錄路徑,將訪問過的結點的值放入,遍歷的時候先計算當前路徑上結點值的總和,並將結點的值放入vector,然後判斷當前結點是否是葉子節點並且當前路徑總和的值是否與要找的值相等,相等則列印vector中的資料。如果當前結點不是葉子節點,遍歷它的左右子樹,最後在每個結點返回父節點之前在當前路徑上刪除此結點。
#include #include using namespace std;
struct binarytreenode
; void findpathintree(binarytreenode* proot,int expectedsum)
void findpath(binarytreenode* proot,int expectedsum,vector& path,int currentsum)
if(proot->m_pright!=null)
//6.返回父節點之前,在路徑上刪除當前結點
path.pop_back();
}
面試題25 二叉樹中和為某一值的路徑
輸入一棵二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。從根的根結點開始往下一直到葉節點 所經過的結點形成一條路徑。include include using namespace std 二叉樹結點定義 struct binarytreenode 建立二叉樹結點 binarytree...
面試題25 二叉樹中和為某一值的路徑
以先序的方式構建二叉樹,輸入 表示結點為空 void createbinarytree binarytreenode proot else void printinorder binarytreenode proot int tmain intargc,tchar argv 說明 用vector模擬...
面試題25 二叉樹中和為某一值的路徑
輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。當用先序遍歷的方式訪問某一結點時候,我們把該結點加入到當前路徑,並計算累加和。若累加和剛好等於輸入的整數,並且該節點為葉子節點,那麼當前路徑符合要求。如果當前節...