演算法 二叉樹中和為某一值的路徑

2021-09-18 02:19:59 字數 659 閱讀 7530

要求:

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

程式:

/*

struct treenode

};*/

class solution

return result;

}private:

void findpathres(treenode* node, int leftnumber, vector&path, vector> &result)else

if(node->right)

}path.pop_back(); //關鍵點2

}};

1.關鍵點1:用目標值依次減去路徑上的每乙個節點值,用這種方式來判斷路徑上每乙個節點值之和是否等於目標值。(之前的想法是,計算路徑上每乙個節點的值之和,然後判斷是否等於目標值)

2.關鍵點2:對於每乙個節點,第一步都需要放進陣列裡,然後判斷是否滿足如下條件

如果目標值恰好為0,且到達葉子節點,則輸出路徑

否則,要麼遞迴(非葉子節點),要麼啥也不幹(到達葉子節點,但目標值未減為0)

最後一步,就是吐出當前節點,目的是為了遍歷下一條路徑(不經過當前節點)

二叉樹中和為某一值的路徑

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 分析 用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結...