日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构与算法--解决问题的方法- 二叉树的的镜像

發布時間:2023/12/4 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法--解决问题的方法- 二叉树的的镜像 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解決問題的思路

  • 工作中遇到的問題可能用到的數據結構由很多,并且各種數據結構都不簡單,我們不可能光憑借想象就能得到問題的解法,因此畫圖是在家具問題過程中用來幫助自己分析,推理的常用手段。很多問題比較抽象,不容易找到解決方案。我們可以借助圖形幫助自己觀察思考。
  • 很多比較復雜的數據結構相關的問題,例如,二叉樹,二維數組,矩陣,鏈表,圖等問題。都可以采用畫圖的方式來分析。
  • 利用圖像來分析更能夠直觀的找到問題的解決方案,而且有時候在圖中也能看出邊界條件,我們可以將問題的某一種情況來代替全量,得出邊界條件需要滿足的值。這樣編碼會變得更加容易
二叉樹的的鏡像
  • 題目:完成一個函數,輸入一個二叉樹,改函數輸出他的鏡像。

  • 二叉樹節點定義還是使用前面二叉樹實現原理中的節點定義。

  • 樹的鏡像這種問題比較新穎,光靠想的話簡單情況可以想出來,當未必能一下子得出具體的實現方案。我們可以畫出一個鏡像圖如下:

  • 我們可以從上圖中直觀的看出鏡像前后的變化,鏡像前后根節點是不變化的,但是左右子樹的位置交換了位置,我們可以一步一步的來話題分析,如下第一步驟。

  • 框中的第一個子樹部分的鏡像信息,根節點不變,子樹左右交換,交換后我們可以用同樣的邏輯處理 8-9-2 子樹和其他的子樹,明顯這部分用遞歸可以實現。

  • 綜上分析得出:

    • 我們先前序遍歷這顆樹的每個節點
    • 如果遍歷到的節點有子節點,就交換兩個子節點
    • 當交換完所有非葉子節點的左右子節點后,就完成了鏡像的輸出。
  • 代碼實現如下:

/*** 獲取二叉樹的鏡像* @author liaojiamin* @Date:Created in 17:36 2021/3/31*/ public class MirrorBinaryTree {public static BinaryNode mirrorTree(BinaryNode root){if(root == null || (root.getLeft() == null && root.getRight() == null)){return root;}BinaryNode treeTemp = root.getRight();root.setRight(root.getLeft());root.setLeft(treeTemp);if(root.getRight() != null){mirrorTree(root.getRight());}if(root.getLeft() != null){mirrorTree(root.getLeft());}return root;}public static void main(String[] args) {BinaryNode node = new BinaryNode(null, null, null);BinarySearchTree tree1 = new BinarySearchTree();Random random = new Random();for (int i = 0; i < 20; i++) {node = tree1.insert(random.nextInt(100), node);}tree1.printTree(node);System.out.println("----------------------mirror------------");mirrorTree(node);tree1.printTree(node);} }

上一篇:數據結構與算法–代碼魯棒性案例分析
下一篇:數據結構與算法–解決問題的方法-順時針打印矩陣

總結

以上是生活随笔為你收集整理的数据结构与算法--解决问题的方法- 二叉树的的镜像的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。