操作給定的二叉樹,將其變換為源二叉樹的映象。
輸入描述:
思路一:遞迴
遞迴的思路主要是利用了二叉樹的前序遍歷。
python實現
# -*- coding:utf-8 -*-
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:# 返回映象樹的根節點
temp = treenode(0)
defmirror
(self, root)
:# write code here
if root is
none
:return root
temp = root.right
root.right = root.left
root.left = temp
self.mirror(root.left)
self.mirror(root.right)
return root
c++實現/*
struct treenode
};*/
class solution
};
思路二:棧的非遞迴
python實現
# -*- 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 is
none
:return root
temp = treenode(0)
cur = temp
stack =
while
(len
(stack)):
cur = stack[-1
] stack.pop(
) temp = cur.right
cur.right = cur.left
cur.left = temp
if cur.left:
if cur.right:
return root
c++實現/*
struct treenode
};*/
class solution }}
;
思路三:佇列的非遞迴方法
c++實現
/*
struct treenode
};*/
class solution }}
;
劍指offer之二叉樹總結
會用遞迴了二叉樹的問題就會一大半了.一.用遞迴求解 對於要利用二叉樹的規律的題都可以利用它的左節點也是其左子樹的根節點的特性來遞迴求解。可以說那種引數有根節點的題一般都可以用遞迴來解決,來看看 劍指offer 中可用遞迴解決的題 1.根據前序遍歷的性質,第乙個元素必然就是root,那麼下面的工作就是...
劍指Offer之 二叉樹的深度
題目 1 求二叉樹的最大深度和最小深度。2 判斷一棵二叉樹是不是平衡二叉樹。include using namespace std struct binarytreenode binarytreenode int value m nvalue value m pleft null m pright ...
劍指offer之二叉樹的深度
輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。方法一 可以使用遞迴的方法,分別求左子樹和右子樹的深度,則樹的深度是 更大者 1。這是乙個遞迴的方法。方法二 使用層次遍歷的方法,每訪問一層,則深度 1,所有層的訪問結束之後,就等...