二叉树的镜像树

原创 2018年04月17日 20:30:42

思路:交换左右子树,时间复杂度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]


剑指offer---二叉树的镜像---java实现

题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。  输入描述: 二叉树的镜像定义:源二叉树         8        /  \       6   10      / ...
  • snow_7
  • snow_7
  • 2016-07-04 20:23:10
  • 2544

二叉树的反转镜像

二叉树的镜像就是二叉树对称的二叉树,比如 镜像之后 就是交换每一非叶子节点的左子树指针和右子树指针 1:递归,如果节点为空,返回,否则交换左右孩子指针;递归镜像节点的左...
  • doubleintfloat
  • doubleintfloat
  • 2016-10-01 17:27:09
  • 1135

笔试面试算法经典--二叉树的镜像-递归与非递归实现(Java)

给出一棵二叉树,求它的镜像,如下图:右边是二叉树是左边二叉树的镜像。解法1(递归)思路1:如果当前节点为空,返回,否则交换该节点的左右节点,递归的对其左右节点进行交换处理。public static ...
  • u013309870
  • u013309870
  • 2017-04-10 19:04:41
  • 1227

二叉树镜像(C++版)

题目: 给定源二叉树,设计算法实现其镜像。 思路: 对于二叉树问题,需要思考除递归方法外的非递归实现。 本题递归很好实现,对于遍历到的头结点,每次交换其左右子树即可。之后对其子树递归调...
  • u013575812
  • u013575812
  • 2015-11-30 21:28:33
  • 818

【学习点滴-数据结构-二叉树】二叉树转换为其镜像。

#include #include #include #include #include #include #define LEAF -1 using namespace std; ...
  • ohmygirl
  • ohmygirl
  • 2012-05-31 15:45:44
  • 903

二叉树镜像(递归与非递归)

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 如下图所示:右边的二叉树就是左边的树的镜像。我们可以根据照镜子的经验画出它的镜像。 递归思想:这两棵树的根节点相同,但是他们的左右孩子交...
  • yang20141109
  • yang20141109
  • 2016-03-11 17:21:11
  • 1677

剑指offer之二叉树的镜像(Python)

操作给定的二叉树,将其变换为源二叉树的镜像。
  • u010636181
  • u010636181
  • 2017-10-19 21:04:09
  • 163

剑指offer面试题:求二叉树的镜像(递归、循环解法及测试用例)

题目:给定二叉树,将其变换为源二叉树的镜像。 二叉树的定义如下: struct TreeNode {     int val;     TreeNode* left;     TreeNode* ...
  • yanxiaolx
  • yanxiaolx
  • 2016-07-25 01:34:25
  • 1957

二叉树的镜像[剑指offer]之python实现

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10...
  • huaxixidongbeishida
  • huaxixidongbeishida
  • 2016-10-26 16:44:12
  • 762

用循环的方法实现二叉树的镜像

程序中包含了递归方法 和循环方法#include #include using namespace std; struct tree { int value; tree *left; tre...
  • fighting_doudou
  • fighting_doudou
  • 2014-08-11 16:19:33
  • 1267
收藏助手
不良信息举报
您举报文章:二叉树的镜像树
举报原因:
原因补充:

(最多只允许输入30个字)