二叉树的镜像(Python实现)


题目

给定一棵二叉树,要求输出其左右翻转后二叉树的中序遍历。

例:
  翻转前:     翻转后:
    1     |     1
   / \    |    / \
  2   3   |   3   2
 / \      |      / \
4   5     |     5   4

解析

两个步骤:

  1. 镜像翻转:只需要遍历二叉树,每次访问一个结点时,交换其左右孩子。
  2. 中序遍历。

Python实现

# -*- coding:utf-8 -*-


class Node(object):
    def __init__(self, value=None, lchild=None, rchild=None):
        self.value = value
        self.lchild = lchild
        self.rchild = rchild


def mirror(root):
    """翻转镜像"""
    if not root:
        return
    root.lchild, root.rchild = root.rchild, root.lchild
    mirror(root.lchild)
    mirror(root.rchild)


def in_order_traverse(root):
    """中序遍历"""
    if not root:
        return
    in_order_traverse(root.lchild)
    print(root.value)
    in_order_traverse(root.rchild)


if __name__ == '__main__':
    root = Node(1, Node(2, Node(4), Node(5)), Node(3))

    mirror(root)  # 翻转二叉树
    in_order_traverse(root)  # 中序遍历


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM