Ejemplo n.º 1
0
from BinarySearchTree import BinarySearchTree
from Node import Node

binarySearchTree = BinarySearchTree()

binarySearchTree.insert(binarySearchTree.getRoot(), Node(50))
binarySearchTree.insert(binarySearchTree.getRoot(), Node(30))
binarySearchTree.insert(binarySearchTree.getRoot(), Node(20))
binarySearchTree.insert(binarySearchTree.getRoot(), Node(40))
binarySearchTree.insert(binarySearchTree.getRoot(), Node(70))
binarySearchTree.insert(binarySearchTree.getRoot(), Node(60))
binarySearchTree.insert(binarySearchTree.getRoot(), Node(80))

# Tree Height
print("Height : ", binarySearchTree.getTreeHeight(binarySearchTree.getRoot()))

# Inorder Traversal
print("Inorder Traversal")
binarySearchTree.inorder(binarySearchTree.getRoot())

# Level Order Traversal
print("Level Order Traversal")
treeHeight = binarySearchTree.getTreeHeight(binarySearchTree.getRoot())
for i in range(1, treeHeight + 1):
    binarySearchTree.levelOrder(binarySearchTree.getRoot(), i)

# Level Order Zig-Zag
print("Level Order Traversal Zig-Zag")
leftToRight = True
for i in range(1, treeHeight + 1):
    binarySearchTree.levelOrderZigZag(binarySearchTree.getRoot(), i,
Ejemplo n.º 2
0
import sys
sys.path.append('com/DataStructure/Python')
from BinarySearchTree import BinarySearchTree


class Solution:
    def isValidTree(self, root, minN, maxN):
        if root is None:
            return True
        if root.val > minN and root.val < maxN:
            return self.isValidTree(root.left, minN,
                                    root.val) and self.isValidTree(
                                        root.right, root.val, maxN)
        else:
            return False

    def isValidBST(self, root):
        return self.isValidTree(root, float('-inf'), float('inf'))


test = BinarySearchTree()
test.addNode(6)
test.addNode(4)
test.addNode(8)
test.printTree(test.getRoot())
sol = Solution()
print(sol.isValidBST(test.getRoot()))
Ejemplo n.º 3
0
from BinarySearchTree import BinarySearchTree, Node
from BracketTreeMaxLevel import BracketTreeMaxLevel


def getCountNodesInLevel(node: Node, level):
    if not Node:
        return 0
    if level == 0:
        return 1
    return getCountNodesInLevel(node.getLeftNode(),
                                level - 1) + getCountNodesInLevel(
                                    node.getRightNode(), level - 1)


tree = BinarySearchTree()
lst = [6, 2, 1, 4, 3, 5, 8, 7, 9]
for i in range(len(lst)):
    tree[i] = lst[i]

print("3-е задание:")
print(tree)
print(getCountNodesInLevel(tree.getRoot(), 2))
print("\n")
Ejemplo n.º 4
0
    def invertTreeDfs(self, root):
        stack = [root]
        while stack:
            current = stack.pop()
            if current:
                current.left, current.right = current.right, current.left
                stack.append(current.left)
                stack.append(current.right)
        return root

    def invertTreeRecursion(self, root):
        if not root:
            return
        root.left, root.right = root.right, root.left
        self.invertTreeRecursion(root.left)
        self.invertTreeRecursion(root.right)
        return root


test = BinarySearchTree()
test.addNode(4)
test.addNode(2)
test.addNode(7)
test.addNode(1)
test.addNode(3)
test.addNode(6)
test.addNode(9)
test.printTreeBfs(test.getRoot())
sol = Solution()
test.printTreeBfs(sol.invertTreeRecursion(test.getRoot()))