刷题 求子树问题 为什么卡在这个 case?望指教

2016-07-17 08:40:19 +08:00
 saxon

http://www.lintcode.com/zh-cn/problem/subtree/


"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None
"""
class Solution:
    preoder_list = []
    inoder_list = []
    # @param T1, T2: The roots of binary tree.
    # @return: True if T2 is a subtree of T1, or false.
    def pre_Traverse_to_list(self, node):
           
            if(node != None):
    #             print Solution.preoder_list
                Solution.preoder_list.append(str(node.val))
                self.pre_Traverse_to_list(node.left)
                self.pre_Traverse_to_list(node.right)
            return Solution.preoder_list 
        
        
    def in_Traverse_to_list(self, node):
            if(node != None):
                self.in_Traverse_to_list(node.left)
                Solution.inoder_list.append(str(node.val))
                self.in_Traverse_to_list(node.right)
            return Solution.inoder_list
    def isSubtree(self, T1, T2):
        T1 =  (''.join(self.pre_Traverse_to_list(T1)),''.join(self.in_Traverse_to_list(T1)))
       

        Solution.preoder_list = []
        Solution.inoder_list = []
        T2 = (''.join(self.pre_Traverse_to_list(T2)),''.join(self.in_Traverse_to_list(T2)))
        if set(T1[0]) == 9 and set(T2[0]) == 9:
            return False
        if (T2[0] in T1[0]) and ( T2[1] in T1[1]) :
            return True
        
        else:
            return False

1926 次点击
所在节点    问与答
9 条回复
just4test
2016-07-17 09:18:38 +08:00
几个问题:
1. “ if set(T1[0]) == 9 and set(T2[0]) == 9:”这句话中, 9 这个 magic num 是哪儿来的?
2. 建议你合成字符串时加入空格。否则:
1
/ 和 11 这两个你会认为是相同的树,他们的前序和中序合成字符串都是 11.
1
3.将树转换为字符串 /数组再判断终究是异端。还是老老实实对比吧,这题不难别老想歪。
saxon
2016-07-17 09:38:22 +08:00
@just4test 这个就是为了 - - 绕过这个 case,... 可能是我想歪了
saxon
2016-07-17 09:39:19 +08:00
@just4test 谢谢...
param
2016-07-19 00:46:11 +08:00
我仿佛又听到有人在背后 @我
saxon
2016-07-19 07:42:00 +08:00
@param 另外一个题目 求教
saxon
2016-07-19 08:45:31 +08:00
@param
http://www.lintcode.com/zh-cn/problem/fast-power/

# def fastPower2(self,a,n,b):
# if n == 1:
# return a%b
# else:
#
# if (n%2==0):
# return self.fastPower2(a,(n/2),b)**2%b
# else:
# return self.fastPower2(a,(n-1)/2,b)**2*a%b
saxon
2016-07-19 08:46:10 +08:00
@just4test 大神 能帮忙看另外一道题么?
写在下面了
just4test
2016-07-19 09:11:16 +08:00
@saxon self.fastPower2(a,(n/2),b) [**] 2%b ,这两个连着的乘号是啥没看懂
saxon
2016-07-19 10:12:36 +08:00
@just4test 二次方

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/292970

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX