Skip to content

Prepare For Coder Interview – Denny

  • Basic
  • Medium
  • Hard
  • Architect
  • Life

LeetCode: Path In Zigzag Labelled Binary Tree

Posted on August 25, 2019July 26, 2020 by braindenny

Path In Zigzag Labelled Binary Tree



Similar Problems:

  • CheatSheet: Leetcode For Code Interview
  • CheatSheet: Common Code Problems & Follow-ups
  • Tag: #zigzag, #manydetails, #binarytree, #complement

In an infinite binary tree where every node has two children, the nodes are labelled in row order.

In the odd numbered rows (ie., the first, third, fifth,…), the labelling is left to right, while in the even numbered rows (second, fourth, sixth,…), the labelling is right to left.

Given the label of a node in this tree, return the labels in the path from the root of the tree to the node with that label.

Leetcode: Path In Zigzag Labelled Binary Tree
Example 1:

Input: label = 14
Output: [1,3,4,14]

Example 2:

Input: label = 26
Output: [1,2,6,10,26]

Constraints:

  • 1 <= label <= 10^6

Github: code.dennyzhang.com

Credits To: leetcode.com

Leave me comments, if you have better ways to solve.


  • Solution:
// https://code.dennyzhang.com/path-in-zigzag-labelled-binary-tree
// Basic Ideas:
//   Caculate the level
//   Get the complement number
//     For one level, the range of nodes: start, start+1, ... 2*start-1
// Complexity: Time O(log(n)), Space O(1)
func pathInZigZagTree(label int) []int {
    start, level, num := 1, 1, 1
    for num < label {
        num = 2*num+1
        start = 2*start
        level++
    }
    res := make([]int, level)
    for label >0 {
        res[level-1] = label
        if level%2 == 0 {
            label = 3*start-1-label
        }
        label=label/2
        start=start/2
        level--
        if level%2 == 0 {
            label = 3*start-1-label
        }
    }
    return res
}
linkedin
github
slack

Post Views: 0
Posted in MediumTagged #binarytree, #manydetails, #zigzag, complement

Post navigation

LeetCode: Number of Valid Subarrays
LeetCode: Lexicographically Smallest Equivalent String

Leave a Reply Cancel reply

Your email address will not be published.

Tags

#array #backtracking #bfs #binarytree #bitmanipulation #blog #classic #codetemplate #combination #dfs #dynamicprogramming #game #graph #greedy #heap #inspiring #interval #linkedlist #manydetails #math #palindrome #recursive #slidingwindow #stack #string #subarray #trie #twopointer #twosum binarysearch editdistance hashmap intervaldp knapsack monotone oodesign presum rectangle redo review rotatelist series sql treetraversal unionfind

Recent Posts

  • a
  • a
  • a
  • a
  • a

Recent Comments

    Archives

    Categories

    • Amusing
    • Basic
    • Easy
    • Hard
    • Life
    • Medium
    • Resource
    • Review
    • Series
    • Uncategorized
    Proudly powered by WordPress | Theme: petals by Aurorum.