二叉樹的鏡像(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