輸入一顆二叉樹的跟節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前)
題目要求的路徑是從根節點到葉子節點的路徑。
即需要遍歷整棵樹,而且需要首先遍歷根節點,所以採用前序遍歷。
首先定義乙個儲存所有路徑的vectorp,再定義乙個儲存符合要求的路徑點的path,二叉樹如下圖所示,其中目標和為22,首先遍歷根節點,再遍歷左子樹,10—5—4,path中壓入了10—5—4,到達葉子節點,發現不符合條件,path刪除4,去遍歷5的右子樹,10—5—7,path中壓入的數字為10,5,7,此時符合和為22,所以將path壓入p中。此時,左子樹已經沒有節點了,然後向上返回,首先刪除7,再刪除5。
此時,根節點的右子樹不為空,則開始遍歷右子樹,10—12,path中壓入了22,此時和滿足22,所以將path壓入p中,向上返回,path刪除22,此時函式執行完畢,p中壓入了兩條路徑:10—5—7與10—12。
**如下:
/*
struct treenode
};*/
class solution
if(root->left!=null) //左子樹不為空,則進左子樹中遍歷查詢
if(root->right!=null)
path.pop_back();
}vector> findpath(treenode* root,int expectnumber)
vectorpath;
paths(root,0,expectnumber,path);
return vec;
}private:
vector> vec;
};
劍指Offer 二叉樹 二叉樹中和為某一值的路徑
輸入一棵二叉樹和乙個整數,列印出二叉樹中節點值的和為輸入整數的所有路徑。從樹的根節點開始往下一直到葉節點所經過的節點形成一條路徑。示例 給定如下二叉樹,以及目標和 sum 22 返回 解題思路 演算法流程 實現 definition for a binary tree node.class tree...
劍指offer 二叉樹 二叉樹中和為某一值的路徑
題目描述 輸入一顆二叉樹的根節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。注意 在返回值的list中,陣列長度大的陣列靠前 參 coding utf 8 class treenode def init self,x ...
二叉樹中和為某一值得路徑 劍指Offer
輸入一顆二叉樹的根節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。注意 在返回值的list中,陣列長度大的陣列靠前 首先需要遞迴遍歷整棵樹,遍歷完每一條路徑,遍歷的順序是先根節點,然後是左節點,接著是右節點 如果節點的...