面試題25 二叉樹中和為某一值的路徑

2021-07-04 03:48:01 字數 818 閱讀 7112

輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。

當用先序遍歷的方式訪問某一結點時候,我們把該結點加入到當前路徑,並計算累加和。

若累加和剛好等於輸入的整數,並且該節點為葉子節點,那麼當前路徑符合要求。

如果當前節點不是葉子節點,那麼繼續訪問它的子節點。

當前節點訪問結束後,遞迴地返回到它的父節點。

注意:在退出當前路徑的時候,要在當前路徑中刪除當前節點,以確保返回父節點時,路徑剛好是從根節點到父節點的路徑。累加和也要減去當前節點的值。

/*

struct treenode

};*/

class solution

//注意用引用傳遞引數

void findapath(treenode* root,vector> &anspath,vector&curpath, int expnum, int curnum)

if(root->left != nullptr)

findapath(root->left, anspath, curpath, expnum, curnum);

if(root->right != nullptr)

findapath(root->right, anspath, curpath, expnum, curnum);

curnum -= root->val;//回到上乙個節點 要減去當前節點的值

curpath.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 二叉樹中和為某一值的路徑

輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。演算法思路 先序遍歷二叉樹,並用乙個vector模擬乙個棧,記錄路徑,將訪問過的結點的值放入,遍歷的時候先計算當前路徑上結點值的總和,並將結點的值放入vecto...