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,
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()))
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")
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()))