輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
分析:題目思想很容易想到,就是根結點減去目標值,然後再在左子樹和右子樹中找就行了,就是深度優先遍歷的思想。但是一開始走了點彎路,第一版寫出來的**就算路徑的最後乙個點不是葉結點,也會認可是路徑,而且在vector表示二維陣列開闢空間時出了點問題,所以**寫的有點繁瑣,下面先貼上自己的第一版**,幫助自己回憶自己犯過的蠢,有需要的小夥伴請直接翻到最後看優化好的**。
蠢的**:
/*struct treenode
};*/
class solution
res.resize(s);
return res;
}void findpath(treenode* root,int n)
res.resize(count1+2);
if(root->val==n)
}res[count1].push_back(root->val);
int n1=0;
n1=n-root->val;
findpath(root->left,n1);
findpath(root->right,n1);
res[count1].pop_back();}};
優化之後的**:變得簡潔了很多
/*struct treenode
};*/
class solution
void findpath(treenode* root,int n)
};
二叉樹中和為某一值的路徑
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 分析 用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結...