Skip to content

Commit 2004f2b

Browse files
committed
Create complete tree contains value
1 parent 24f20d7 commit 2004f2b

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import unittest
2+
from collections import deque
3+
4+
from data import TreeNode
5+
6+
7+
# Given the head of a complete tree and a value, determine if the value is in the tree.
8+
def hasValue(head: TreeNode, key: int) -> bool:
9+
stack = deque()
10+
stack.append(key)
11+
node = key >> 1
12+
while node > 1:
13+
stack.append(node)
14+
node = node >> 1
15+
current_node = head
16+
while stack:
17+
current = stack.pop()
18+
if current % 2 == 1:
19+
if current_node.right:
20+
current_node = current_node.right
21+
else:
22+
return False
23+
else:
24+
if current_node.left:
25+
current_node = current_node.left
26+
else:
27+
return False
28+
return True
29+
30+
31+
def test():
32+
node756 = TreeNode(val=756)
33+
node378 = TreeNode(val=378, left=node756)
34+
node189 = TreeNode(val=189, left=node378)
35+
node94 = TreeNode(val=94, right=node189)
36+
node47 = TreeNode(val=47, left=node94)
37+
node23 = TreeNode(val=23, right=node47)
38+
node11 = TreeNode(val=11, right=node23)
39+
node5 = TreeNode(val=5, right=node11)
40+
node3 = TreeNode(val=3)
41+
node2 = TreeNode(val=2, right=node5)
42+
node1 = TreeNode(val=1, left=node2, right=node3)
43+
44+
result = hasValue(node1, 756)
45+
assert result, f'{result} != True'
46+
47+
result = hasValue(node1, 780)
48+
assert not result, f'{result} != False'
49+
50+
51+
test()

0 commit comments

Comments
 (0)