操作給定的二叉樹,將其變換為源二叉樹的映象。
二叉樹的映象定義:源二叉樹
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...