View difference between Paste ID: 0h0AnvBb and tqdm6XJp
SHOW: | | - or go back to the newest paste.
1
"""
2
Definition of TreeNode:
3
class TreeNode:
4
    def __init__(self, val):
5
        self.val = val
6
        self.left, self.right = None, None
7
"""
8
9
class Solution:
10
    """
11
    @param a: the root of binary tree a.
12
    @param b: the root of binary tree b.
13
    @return: true if they are tweaked identical, or false.
14
    """
15
    def isTweakedIdentical(self, a, b):
16
        if not a and not b:
17
            return True
18
        
19
        if a and not b:
20
            return False
21
        
22
        if b and not a:
23
            return False
24
        # write your code her
25
    
26
        def inorder_traversal_left(root,res):
27
            if not root:
28
                return
29
            
30
            inorder_traversal_left(root.left,res)
31
            res.append(root.val)
32
            inorder_traversal_left(root.right,res)
33
            return
34
        
35
        def inorder_traversal_right(root,res):
36
            if not root:
37
                return
38
            
39
            inorder_traversal_right(root.right,res)
40
            res.append(root.val)
41
            inorder_traversal_right(root.left,res)
42
            return
43
        
44
        def preorder(root,res):
45
            if not root:
46
                return 
47
            
48
            res.append(root.val)
49
            preorder(root.left,res)
50
            preorder(root.right,res)
51
            return
52
        
53
        def same_tweaked_tree(x,y):
54
            if not x and not y:
55
                return True
56
            
57
            if x and not y:
58
                return False
59
            
60
            if y and not x:
61
                return False
62
            
63
            return same_tweaked_tree(x.left,y.right) and same_tweaked_tree(x.right,y.left)
64
65
        a_inorder_left=[]
66
        b_inorder_left,b_inorder_right=[],[]
67
        
68
        inorder_traversal_left(a,a_inorder_left)
69
        inorder_traversal_left(b,b_inorder_left)
70
        inorder_traversal_right(b,b_inorder_right)
71
        
72
        tweaked=False
73
        print(a_inorder_left)
74
        print(b_inorder_left)
75
        print(b_inorder_right)
76
        
77
        if a_inorder_left==b_inorder_left:
78
            return True
79
        else:
80
            if a_inorder_left==b_inorder_right:
81
                tweaked=True
82
            else:
83
                return False
84
        
85
        print(tweaked)
86
        if not tweaked:
87
            a_preorder,b_preorder=[],[]
88
            preorder(a,a_preorder)
89
            preorder(b,b_preorder)
90
            return a_preorder==b_preorder
91
        else:
92
            print('here')
93
            return same_tweaked_tree(a,b)