Binary Tree Paths(二叉樹的路徑)

2021-07-25 02:11:32 字數 1170 閱讀 2694

given a binary tree, return all root-to-leaf paths.(給定一棵二叉樹,返回所有根節點到葉子節點的路徑)

for example, given the following binary tree:

1

/ \

2 3

\ 5

all root-to-leaf paths are:

[「1->2->5」, 「1->3」]

1.個人分析

採用先序遍歷對二叉樹進行遍歷,在遍歷的同時將經過的節點儲存到結果集中去。

2.個人解法

void findpath(treenode *root, vector

&res, string path)

else

res.push_back(path);

}if(path.empty())

else

findpath(root->left, res, path);

findpath(root->right, res, path);

}vector

binarytreepaths(treenode* root)

3.參考解法

void dfs(treenode* root, vector

&result,string branch)

if (root->left) dfs(root->left, result, branch + "->" + to_string(root->left->val));

if (root->right) dfs(root->right, result, branch + "->" + to_string(root->right->val));

} vector

binarytreepaths(treenode* root)

4.總結

參考解法採用的是dfs,也就是後序遍歷的方式進行路徑查詢,相比先序遍歷**更加簡潔。

ps:

Binary Tree Paths二叉樹路徑

問題描述 given a binary tree,return all root to leaf paths.給定乙個二叉樹,返回所有從根節點到葉子節點的路徑。思路 深度優先遍歷中的前序遍歷 給定子樹,先訪問根節點,再訪問左節點,最後訪問右節點 非遞迴的實現方式通過堆疊輔助。由於題目要求返回所有 根...

二叉樹尋路

在一棵無限的二叉樹上,每個節點都有兩個子節點,樹中的節點 逐行 依次按 之 字形進行標記。如下圖所示,在奇數行 即,第一行 第三行 第五行 中,按從左到右的順序進行標記 而偶數行 即,第二行 第四行 第六行 中,按從右到左的順序進行標記。給你樹上某乙個節點的標號 label,請你返回從根節點到該標號...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...