高效二叉树寻路算法
Posted w3liu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高效二叉树寻路算法相关的知识,希望对你有一定的参考价值。
package main
import (
"fmt"
"math/bits"
)
func main()
res := pathInZigZagTree(100)
fmt.Println(res)
func pathInZigZagTree(label int) []int
// 偶数行从大到小 每一行的数字 2的行-1次方-2的行次方-1,
// 奇数行从小到大
// 1000
res := make([]int, 0)
h := bits.Len(uint(label))
for i := h; i > 0; i--
res = append(res, label)
max := 1<<uint(i-1) - 1
// min := max + 1>>1
// 偶数行
m := label % (1 << uint(i-1)) / 2
if label%2 == 1
m = (label - 1) % (1 << uint(i-1)) / 2
label = max - m
arr := make([]int, h)
for i := 0; i < h/2; i++
arr[i] = res[h-i-1]
arr[h-i-1] = res[i]
if h%2 == 1
arr[h/2] = res[h/2]
return arr
以上是关于高效二叉树寻路算法的主要内容,如果未能解决你的问题,请参考以下文章
[M二叉树] lc1104. 二叉树寻路(思维+找规律+数学)
LeetCode 1104. 二叉树寻路/103. 二叉树的锯齿形层序遍历/ 171. Excel表列序号/ 987. 二叉树的垂序遍历