We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
class Node:
def init(self, val):
self.val = val
self.left = None
self.right = None
def createNode(indexes):
if not indexes:
return None
root = Node(1)
q = deque([root])
for left_val, right_val in indexes:
node = q.popleft()
if left_val != -1:
node.left = Node(left_val)
q.append(node.left)
if right_val != -1:
node.right = Node(right_val)
q.append(node.right)
return root
def swapNodes(root, queries):
if not root or not queries:
return []
for k in queries:
q = deque([root])
level = 1
while q:
for _ in range(len(q)):
node = q.popleft()
if level % k == 0:
node.left, node.right = node.right, node.left
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
level += 1
def inOrderTraversal(root):
if not root:
return []
result = []
stack = []
while root or stack:
while root:
stack.append(root)
root = root.left
root = stack.pop()
result.append(root.val)
root = root.right
return result
Swap Nodes [Algo]
You are viewing a single comment's thread. Return to all comments →
from collections import deque
class Node: def init(self, val): self.val = val self.left = None self.right = None
def createNode(indexes): if not indexes: return None
def swapNodes(root, queries): if not root or not queries: return []
def inOrderTraversal(root): if not root: return []
def swapNodesAndTraverse(indexes, queries): root = createNode(indexes) swapNodes(root, queries) return inOrderTraversal(root)