牛客1610600号 level
获赞
321
粉丝
4
关注
2
看过 TA
20
北京航空航天大学
2018
算法工程师
IP属地:北京
暂未填写个人简介
私信
关注
2017-10-23 16:39
已编辑
北京航空航天大学 算法工程师
0 点赞 评论 收藏
分享
2017-10-20 13:59
已编辑
北京航空航天大学 算法工程师
0 点赞 评论 收藏
分享
2017-09-29 14:52
已编辑
北京航空航天大学 算法工程师
0 点赞 评论 收藏
分享
2017-10-17 12:42
已编辑
北京航空航天大学 算法工程师
我跪的那道算法题,我跪不瞑目 剑指offer里的:按之字形顺序打印二叉树 因为原来没刷过这道题,经过思考后,觉得用一个队列和一个栈可以完成 虽然我的答案不对,但是面试官说可以用一个队列就能完成,用空指针判断每行是不是结束。。。。 我到现在还是不明白面试官的想法。。。。。大佬们请指教
写了一个程序,求大神看看 # -*- coding: UTF-8 -*-. class Node(object):     """节点类"""     def __init__(self, data = -1, lchild = None, rchild = None, isEmpty = 0):         self.data = data         self.lchild = lchild         self.rchild = rchild         self.isEmpty = isEmpty class BinaryTree(object):     """树类"""     def __init__(self):         self.root = Node(isEmpty = 1)     def add(self, data):         """为树增加节点,建立二叉查找树"""         node = Node(data)         if self.root.isEmpty == 1:             self.root = node         else:             treeNode = self.root             while(1):                 if node.data <= treeNode.data:                     if treeNode.lchild == None:                         treeNode.lchild = node                         break                     else:                         treeNode = treeNode.lchild                 else:                     if treeNode.rchild == None:                         treeNode.rchild = node                         break                     else:                         treeNode = treeNode.rchild     def printTree(self):         """按之字形顺序打印二叉树"""         if self.root == None:             return         myList = []         myList.append(self.root)         flagForward = 0# 为0表示下一行逆序打印,为1表示下一行正序打印         numberNow = 1         numberNext = 0         while(1):             # 表示在该行查找             if numberNow:                 # 总是将先放入的先打印出来                 node = myList.pop(0)                 numberNow -= 1                 print node.data,                 # 根据flagForward的值改变左右子树的打印数学                 if flagForward:                     if node.rchild:                         myList.insert(numberNow, node.rchild)                         numberNext += 1                     if node.lchild:                         myList.insert(numberNow, node.lchild)                         numberNext += 1                 else:                     if node.lchild:                         myList.insert(numberNow, node.lchild)                         numberNext += 1                     if node.rchild:                         myList.insert(numberNow, node.rchild)                         numberNext += 1             # 表示该行结束了             else:                 # 下一行变成该行                 if numberNext:                     numberNow = numberNext                     numberNext = 0                     # 正方向逆序                     flagForward = ~flagForward                 # 表示树结束了                 else:                     break def test():     'Test the program.'     arr = [5, 6, 1, 4, 2, 69, -1, 24]     tree = BinaryTree()     for item in arr:         tree.add(item)     #         5     #     1       6     # -1    5      69     #      2      24     print '按之字形顺序打印二叉树:'     tree.printTree() if __name__ == "__main__":     test()
投递快手等公司10个岗位 >
0 点赞 评论 收藏
分享
2017-09-22 11:52
已编辑
北京航空航天大学 算法工程师
投递京东等公司10个岗位 >
0 点赞 评论 收藏
分享
2017-09-20 10:17
已编辑
北京航空航天大学 算法工程师
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务