輸入乙個二叉樹,查詢該樹的所有路徑(從根結點到葉結點的通路),並返回和(路徑上所有結點值的和)為某一指定值的路徑。
1////////////
/二叉樹中和為某一值的路徑
/////////////////////
2void findpath(binarytreenode* proot ,int expectedsum ,vector& path ,int
currentsum)
38 currentsum += proot->m_nvalue;
9 path.push_back(proot->m_nvalue);
10//
如果是葉子結點,且結點的和等於希望的值,列印出這條路徑
11if (currentsum == expectedsum && proot->m_pleft == null && proot->m_pright ==null)
1219 cout<21if (proot->m_pleft)
2225
if (proot->m_pright)
2629
//currentsum = currentsum - path.back();
30path.pop_back();31}
32void findpath(binarytreenode* proot , int expectedsum)//
使用者介面
3338
int currentsum = 0
;39 vectorvec ;
40findpath(proot ,expectedsum ,vec , currentsum );
4142 }
二叉樹中和為某一值的路徑
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的左右子樹後從棧中移除。每訪問乙個節點,就計算當前路徑值 可直接利用父節點的路徑值 當其等於給定值且當前節點是葉子節點時,就列印...
二叉樹中和為某一值的路徑
面試題25 二叉樹中和為某一值的路徑 struct binarytreenode int value binarytreenode pleft binarytreenode pright 分析 用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結...