if t1:
            res = t1
        elif t2:
            res = t2
        else:
            return []
        traversal(t1, t2)
        return res

    def mergeTrees2(self, t1: TreeNode, t2: TreeNode) -> TreeNode:
        if t1 and t2:
            node = TreeNode(t1.val + t2.val)
            node.left = self.mergeTrees(t1.left, t2.left)
            node.right = self.mergeTrees(t1.right, t2.right)
            return node
        return t1 or t2


tt1 = [1, 3, 2, 5]
tt2 = [2, 1, 3, "null", 4, "null", 7]
tt1 = []
tt2 = [1]
t = MyTree()
t1 = t.maketree(tt1)
t2 = t.maketree(tt2)

s = Solution()
res = s.mergeTrees(t1, t2)
print(t.print_tree(res))
Example #2
0

# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right


class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
        def make_bst(lo, hi):
            if lo > hi:
                return None
            mid = (lo + hi) // 2
            root = TreeNode(nums[mid])
            root.left = make_bst(lo, mid - 1)
            root.right = make_bst(mid + 1, hi)
            return root

        return make_bst(0, len(nums) - 1)


nums = [-10, -3, 0, 5, 9]
nums = [1, 3]
s = Solution()
root = s.sortedArrayToBST(nums)
t = MyTree()
print(t.print_tree(root))

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right


class Solution:
    def constructMaximumBinaryTree(self, nums: List[int]) -> TreeNode:
        if len(nums) == 0:
            return None
        maxm = max(nums)
        ind = nums.index(maxm)
        root = TreeNode(maxm)

        root.left = self.constructMaximumBinaryTree(nums[:ind])
        root.right = self.constructMaximumBinaryTree(nums[ind + 1:])

        return root


nums = [3, 2, 1, 6, 0, 5]
# nums = [3,2,1]
s = Solution()
root = s.constructMaximumBinaryTree(nums)
t = MyTree()
res = t.print_tree(root)
print(res)
Example #4
0
from iv.Binarytree.mytree import MyTree


arr = [100, 98, 102, 96, 99, "null", "null", "null", 97]
m = MyTree()
root = m.maketree(arr)
res = m.print_tree(root)
print(res)

Example #5
0
                # print(res[i].val, res[i+1].val)
                if res[i].val > res[i + 1].val:
                    node1 = res[i]
                    notfound = False
            else:
                if res[i].val < res[i - 1].val:
                    ind.append(i)
        # print(ind)
        node2 = res[max(ind)]
        # print(node1.val, node2.val)
        node1.val, node2.val = node2.val, node1.val


t = TreeNode(3)
t.left = TreeNode(1)
t.right = TreeNode(4)
t.right.left = TreeNode(2)

t = TreeNode(1)
t.left = TreeNode(3)
t.left.right = TreeNode(2)

obj = MyTree()

root = [1, 3, "null", "null", 2]
# root = [3,1,4,"null","null",2]
t = obj.maketree(root)
s = Solution()
s.recoverTree(t)
print(obj.print_tree(t))
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right


class Solution:
    def pruneTree(self, root: TreeNode) -> TreeNode:
        def isvalid(node: TreeNode):
            if not node:
                return False
            a1 = isvalid(node.left)
            a2 = isvalid(node.right)
            if not a1: node.left = None
            if not a2: node.right = None
            return node.val == 1 or a1 or a2

        return root if isvalid(root) else None


t = MyTree()
mytt = [1, "null", 0, 0, 1]
root = t.maketree(mytt)
s = Solution()
print(s.pruneTree(root))
res = t.print_tree(s.pruneTree(root))
print(res)