每天做一道算法題,循序漸進,按算法分類刷題。堅持下去,看能堅持多久,也看最終能有多大成效
二叉樹尋路
在一棵無限的二叉樹上,每個節點都有兩個子節點,樹中的節點 逐行 依次按 “之” 字形進行標記。
如下圖所示,在奇數行(即,第一行、第三行、第五行……)中,按從左到右的順序進行標記;
而偶數行(即,第二行、第四行、第六行……)中,按從右到左的順序進行標記。
給你樹上某一個節點的標號 label,請你返回從根節點到該標號為 label 節點的路徑,該路徑是由途經的節點標號所組成的。
![每日算法練習20200423](http://p2.ttnews.xyz/loading.gif)
示例 1:
輸入:label = 14
輸出:[1,3,4,14]
示例 2:
輸入:label = 26
輸出:[1,2,6,10,26]
提示:
1 <= label <= 10^6
解決方案
重要的是一個規律,除了最後一層,它的上一層節點的值,都是前一層對稱節點除以2,所以需要找到每一層的對稱節點除以2就是最終的結果。
實現代碼
![每日算法練習20200423](http://p2.ttnews.xyz/loading.gif)
參考鏈接
https://leetcode-cn.com/problems/path-in-zigzag-labelled-binary-tree
https://zhuanlan.zhihu.com/p/80662293
閱讀更多 突破程序員 的文章