Skip to content

Instantly share code, notes, and snippets.

@itasyurt
Created November 5, 2018 12:23
Show Gist options
  • Save itasyurt/ed5bf736c615d6c837f1e7419f85f626 to your computer and use it in GitHub Desktop.
Save itasyurt/ed5bf736c615d6c837f1e7419f85f626 to your computer and use it in GitHub Desktop.
balanced
__author__ = 'itasyurt'
class BinaryTreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def insert_left(self, value):
self.left = BinaryTreeNode(value)
return self.left
def insert_right(self, value):
self.right = BinaryTreeNode(value)
return self.right
def _balanced_values(tree, depth):
if not tree:
return (True, depth)
else:
print(tree.value)
vl = _balanced_values(tree.left, depth+1)
vr = _balanced_values(tree.right, depth+1)
if vl[0] and vr[0]:
dd = abs(vl[1]-vr[1])
if dd <= 1:
return(True, max(vl[1],vr[1]))
return (False, max(vl[1],vr[1]))
def is_balanced(tree):
return _balanced_values(tree, 0)[0]
input_tree = BinaryTreeNode(3)
input_tree.insert_right(7)
input_tree.insert_left(2)
input_tree.right.insert_right(10)
input_tree.right.insert_left(5)
print(is_balanced(input_tree))
input_tree.right.right.insert_left(9)
print(is_balanced(input_tree))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment