二叉树的镜像树

思路:交换左右子树,时间复杂度O(n),先序遍历

 

class TreeNode(object):

    def __init__(self,data,left = None,right =None):

        self.data = data

        self.left = left

        self.right = right

A = TreeNode("A")

B = TreeNode("B")

C = TreeNode("C")

D = TreeNode("D")

E = TreeNode("E")

F = TreeNode("F")

G = TreeNode("G")

A.left = B

A.right = C

A.data = 8

B.left = D

B.right = E

B.data = 6

C.left = F

C.right = G

C.data = 10

D.left = None

D.right = None

D.data = 5

E.left = None

E.right = None

E.data = 7

F.left = None

F.right = None

F.data = 9

G.left = None

G.right = None

G.data = 11

 

def TreeMirro(tree_node,l):

    if tree_node is None or (tree_node.left isNone and tree_node.right is None):

        l.append(tree_node.data)

        return tree_node

    tree_node.left,tree_node.right =tree_node.right,tree_node.left

    l.append(tree_node.data)

    print "---"

    if tree_node.left:

        TreeMirro(tree_node.left,l)

    if tree_node.right:

        TreeMirro(tree_node.right,l)

    return l

l = []

print TreeMirro(A,l)

#first [8, 6, 5, 7, 10, 9,11]

#chang [8, 10, 11, 9, 6, 7,5]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值