劍指Offer17 二叉樹的映象

2021-10-01 08:16:20 字數 1196 閱讀 3472

操作給定的二叉樹,將其變換為源二叉樹的映象。

二叉樹的映象定義:源二叉樹 

8/ \

6 10

/ \ / \

5 7 9 11

映象二叉樹

8/ \

10 6

/ \ / \

11 9 7 5

先交換根節點的兩個子結點之後,我們注意到值為10、6的結點的子結點仍然保持不變,因此我們還需要交換這兩個結點的左右子結點。做完這兩次交換之後,我們已經遍歷完所有的非葉結點。此時變換之後的樹剛好就是原始樹的映象。

/*

struct treenode

};*/

class solution

treenode *ptemp = proot->left;

proot->left = proot->right;

proot->right = ptemp;

if(proot->left)

if(proot->right)}}

;

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

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:# 返回映象樹的根節點

defmirror

(self, root)

:# write code here

if(root ==

none

or(root.left ==

none

and root.right ==

none))

:return

none

tmp = root.left

root.left = root.right

root.right = tmp

if root.left:

self.mirror(root.left)

if root.right:

self.mirror(root.right)

劍指offer 17 重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 根據中序遍歷和前序遍歷可以確定二叉樹,具體過程為 1 根據前序序列第乙個結點確定根結點 2 根據根結點在中序序列中的...

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5 這道題目就是交換樹的左右節點之後,遞迴呼叫。不遞迴的方法我覺得可以考慮使用層次遍歷那樣的佇列式方法,不過太麻煩了吧。coding utf 8 class...

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5交換左右節點,遍歷左節點,右節點,求映象 class treenode def init self,item self.val item self.lef...