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的所在子樹...