【劍指offer】給定一個二叉樹,將其變換為源二叉樹的映象
題目要求
給定一個二叉樹,將其變換為源二叉樹的映象。
核心思想
遞迴思想,分治呼叫。
完整程式碼如下
public class Solution {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public void Mirror(TreeNode root) {
if(root == null) {
return;
}
if(root.left == null && root.right == null) {
return;
}
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
Mirror(root.left);
Mirror(root.right);
}
}
相關推薦
【劍指offer】給定一個二叉樹,將其變換為源二叉樹的映象
題目要求 給定一個二叉樹,將其變換為源二叉樹的映象。 核心思想 遞迴思想,分治呼叫。 完整程式碼如下 public class Solution { public class TreeNode { int val; TreeNode left; TreeNo
【劍指Offer】操作給定的二叉樹,將其變換為源二叉樹的鏡像。
right 鏡像 tree style turn val 交換 實現 oot 二叉樹的鏡像定義:源二叉樹 8 / \ 6 10 / \ / \ 5 7 9 11 鏡像二叉樹 8
操作給定的二叉樹,將其變換為源二叉樹的鏡像
pos turn amp 變換 temp null treenode != nbsp 1 class Solution { 2 public: 3 void Mirror(TreeNode *pRoot) { 4 if(pRoot==NUL
操作給定的二叉樹,將其變換為源二叉樹的映象。
public class Solution { public void Mirror(TreeNode root) {
【劍指offer】給定一個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
題目要求 給定一個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。 核心思想 兩個要點: << : 左移運算子,num << 1,相當於num乘以2 >> : 右移運算子,nu
【劍指offer】輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList
劍指offer第三題 題目如下 輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList 具體程式碼實現如下: 下面展示兩種程式碼實現,思想都是基於遞迴,遍歷到連結串列末尾,由低向上儲存資料。 1.相互呼叫遞迴 import java.util.Arra
【劍指Offer】輸入一個正數s,打印出所有和為s 的連續正數序列(序列大小至少為2) (C++)
題目用例: s = 15,那麼由於1+2+3+4+5 = 4+5+6=7+8 = 15,所以存在3個這樣的序列。 分析: 由於序列大小至少為2,我們定義兩個變數l和r,分別表示序列的最小值和最大值。 對於r而言,r取何值其實是有一個範圍的,即當序列只有2
【劍指offer】輸入一個整數,輸出該數二進位制表示中1的個數,其中負數用補碼錶示。
題目要求 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 核心思路 如果一個整數不為0,那麼這個整數至少有一位是1,如果把這個整數減1,那麼原來整數最右邊的1就會變為0,原來在1右邊的所有0都會變為1。那麼,利用n = n & (n - 1),
【劍指offer】左旋轉字符串,C+實現
ews 試用 name DC http ref tst solution otto 原創博文,轉載請註明出處! 本題牛客網地址 本題代碼的github地址 本系列文章的索引地址 # 題目 # 思路 先局部翻轉,後整體翻轉。舉例:abcdefg先局部翻轉為bag
【劍指offer】包含min函式的棧,可以返回棧中的最小元素
題目要求 包含min函式的棧 定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式 (時間複雜度應為O(1))。 核心思想 棧的特性是先進後出,而不能從任意位置出棧,因此一個棧無法實現。只能通過建立輔助棧來實現。用輔助棧來儲存棧的最小
【劍指offer】實現1+2+3+..+n,要求不使用乘除法、迴圈、判斷條件
這道題目的實質是考察程式設計師的發散思維能力,發散思維能夠反映出應聘者知識面的寬度,以及對程式設計相關技術理解的深度。拿到這道題時,首先考慮最簡便的方法當然是利用等差數列求和公式(n+1)n/2,想要得出結果,無外乎迴圈和遞迴兩種,但是題目限制了迴圈,判斷條件都不能使用,使用
【劍指offer】8、二叉樹中序遍歷的下一個節點
pan color col amp nullptr nbsp 父節點 public turn 題目 給定一個二叉樹和其中一個節點,找出中序遍歷的下一個節點。註意:樹的節點中除了有指向左右節點的指針,還有指向父節點的指針。 思路 (1)若該節點Node有右子樹,則下一個節點就
【劍指offer】二叉樹的下一個節點
給出一棵二叉樹和一個節點,求中序遍歷序列的下一個節點。二叉樹結構是給出了左右節點以及父節點的。 首先分析中序遍歷,中序遍歷即左父右的順序遍歷樹。 分析規律: (1)節點存在右節點 if(p->right) 則不斷檢查p->right是否還有左節點,若沒有左節點了,該節點即
【劍指Offer】二叉樹的下一個結點
題目描述:給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。 解題思路: 解題的時候要將情況考慮清楚,(1) 若一個結點有右子樹,那麼下一個結點就是右子樹中的最左子結點。 (2) 若沒有右子樹,則向上
【劍指offer】二分查找二維數組
案例 index lan 溢出 ble 可能 outline pan min 轉載請註明出處:http://blog.csdn.net/ns_code/article/details/24977113 劍指offer上的第三道題目。在九度OJ上測試通過題目描寫敘述
【劍指offer】二叉搜索樹轉雙向鏈表,C++實現
pointer 題目 size point nod off log tco public 原創博文,轉載請註明出處!# 題目 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。要求不能創建任何新的節點
【劍指offer】面試題 4.二維數組中的查找
這樣的 || int targe arr find off col lean 面試題 4. 二維數組中的查找 題目:在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組
【劍指offer】面試題 28. 對稱的二叉樹
fin 技術分享 root 實現一個函數 面試題 分享 inf right png 面試題 28. 對稱的二叉樹 題目描述 題目:請實現一個函數,用來判斷一顆二叉樹是不是對稱的。註意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其為對稱的。 解答過程 給定一個二叉
【劍指offer】7、重建二叉樹
nbsp treenode truct 遞歸函數 tar end || 部分 遍歷 題目 給出二叉樹的前序遍歷與中序遍歷結果,重建該二叉樹。 思路 由於前序遍歷的第一個數字是根節點,將中序遍歷分為左右子樹兩個部分。接下來就遞歸,將左子樹和右子樹的序列分離出來,然後調用遞歸函
【劍指offer】二叉搜索樹的後序遍歷序列
image 最大 樹的定義 結果 註意事項 ron com 題目 序列 一、題目: 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 二、思路: 1.搜索二叉樹