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

2021-06-28 07:18:59 字數 715 閱讀 2782

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

struct binarytreenode

int value;

binarytreenode* pleft;

binarytreenode* pright;

分析:用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結點新增到路徑上並且遍歷其子節點,若是葉子結點或值大於這個值,則返回到父結點。若等於這個值則列印。

void findpath(binarytreenode* proot,int expectedsum)

std::vectorpath;

int cuurentsum = 0;

findpath(proot,expectedsum,path,currentsum);

}void findpath

( binarytreenode* proot,

int expectedsum,

std::vector& path,

int currentsum

) printf("\n");

} if(proot->pleft != null)

if(proot->right != null)

path.pop_back();

}

感覺只要涉及到樹的題目,如果不做特殊的要求基本上都會採用遞迴的寫法。

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

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的左右子樹後從棧中移除。每訪問乙個節點,就計算當前路徑值 可直接利用父節點的路徑值 當其等於給定值且當前節點是葉子節點時,就列印...

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

1.問題描述 輸入一顆二叉樹和乙個整數,列印出二叉樹中的結點值的和為輸入整數的所有路徑。從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。來自 劍指offer 2.分析 找到值為某一值的路徑,我們知道無非就是樹的遍歷,但是怎麼儲存呢?因為樹在遍歷的時候需要遞迴,我們可以用棧來儲存路徑。比如 ...