Java來實現二叉樹算法,將一個二叉樹左右倒置(左右孩子節點互換)

文章目錄

  • 二叉樹算法
    • 二叉樹左右變換數據

今天來和大家談談常用的二叉樹算法

二叉樹算法

二叉樹左右變換數據

舉個例子:
Java來實現二叉樹算法,將一個二叉樹左右倒置(左右孩子節點互換)如下圖所示
在這里插入圖片描述

實現的代碼如下:以下定義的類是內部類

//    2. 講一個做二叉樹左右替換
//    1. 先給一個二叉樹的內部類,類里面分出左右的對象的變量public static class Tree {private Object data;public Object getData() {return data;}public void setData(Object data) {this.data = data;}public Tree getLeft() {return left;}public void setLeft(Tree left) {this.left = left;}public Tree getRight() {return right;}public void setRight(Tree right) {this.right = right;}// 給出左右的樹private Tree left;private Tree right;// 構造方法public Tree(Object data, Tree left, Tree right) {this.data = data;this.left = left;this.right = right;}/*** 獲取二叉樹的深度* @param root root* @return int*/public static int getMaxDepth(Tree root) {if (root == null) return 0;// 需要遞歸獲取深度return Math.max(getMaxDepth(root.left), getMaxDepth(root.right)) + 1;}/*** 二叉樹的交換方法OK,經過驗證* @param root Tree*/public static void swap(Tree root) {if (root == null) return;// 交換Tree tmp = root.left;root.left = root.right;root.right = tmp;// 遞歸交換swap(root.left);swap(root.right);}/***  二叉樹的左右交換* @param root*/public static void swapAgin(Tree root) {if (root == null) return;Stack<Tree> statck = new Stack<>();statck.push(root);while (!statck.isEmpty()) {Tree node = statck.pop();Tree tmp = node.left;node.left = node.right;node.right = tmp;if (node.left != null) {statck.push(node.left);}if (node.right != null) {statck.push(node.right);}}}public static void main(String[] args) {// 以下模擬的二叉樹圖片地址在此: https://img-blog.csdnimg.cn/1ae454d94ab04d8e8fb6f313248beb3a.pngTree left9 = new Tree(9, null, null);Tree right3 = new Tree(3, null, null);Tree right8 = new Tree(8, null, null);Tree left7 = new Tree(7, null, right8);Tree right11 = new Tree(11, left9, right3);Tree root5 = new Tree(5, left7, right11);System.out.println("原始的二叉樹結果:" + root5);
//       交換swap(root5);
//            swapAgin(root5);System.out.println("swap()方法交換之后的二叉樹結構為:" + root5);}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207814.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207814.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207814.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ECharts的顏色漸變

目錄 一、直接配置參數實現顏色漸變 二、使用ECharts自帶的方法實現顏色漸變 一、兩種漸變的實現方法 1、直接配置參數實現顏色漸變 橫向的漸變&#xff1a; //主要代碼 option {xAxis: {type: category,boundaryGap: false,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yA…

云上巴蜀丨云軸科技ZStack成功實踐精選(川渝)

巴蜀——古政權必爭之地 不僅擁有優越的戰略位置 而且擁有豐富的自然資源&#xff0c;悠久的歷史文化 如今的川渝經濟、人口發展迅速 2023年前三季度&#xff0c;四川與重慶GDP增速均超過國家平均線&#xff0c;為6.5%為5.6% 川渝經濟發展帶動數字化發展浪潮 云軸科技ZSt…

打造專屬小程序,喬拓云模板平臺助力商家搶占先機

打造專屬小程序&#xff0c;喬拓云模板平臺助力商家搶占先機&#xff01;該平臺涵蓋全行業小程序模板&#xff0c;一鍵復制即可上線。 想要快速創建高效實用的小程序&#xff0c;喬拓云小程序模板開發平臺為您提供了解決方案&#xff01;我們為您提供一系列精心設計的小程序模板…

LeetCode Hot100 131.分割回文串

題目&#xff1a; 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正著讀和反著讀都一樣的字符串。 方法&#xff1a;靈神-子集型回溯 假設每對相鄰字符之間有個逗號&#xff0c;那么就看…

[c++]—string類___深度學習string標準庫成員函數與非成員函數(string的增刪查改函數)

沉淀,沉淀,再沉淀. &#x1f469;&#x1f3fb;?&#x1f4bb;作者:chlorine &#x1f449;上一篇&#xff1a;string標準庫成員函數和非成員函數(上) 目錄 &#x1f36d;構造和析構的實現 &#x1f36d; string→c類型的字符串數組 &#x1f36d;operator[]類對象元素的訪…

c語言-動態內存管理

文章目錄 一、為什么會有動態內存管理二、申請內存函數1、malloc2、free3、calloc4、realloc 三、常見的動態內存的錯誤四、練習 一、為什么會有動態內存管理 1.我們一般的開辟空間方式&#xff1a; int a 0;//申請4個字節空間 int arr[10] { 0 };//申請40個字節空間2.這樣…

解決在Linux中進行redis的主從復制時出現的從機可以獲取到主機的信息,主機獲取不到從機的信息~

主機&#xff1a; 從機1&#xff1a; 從機2&#xff1a; 出現上述的原因是我在redis.conf中設置了密碼&#xff0c;那么就導致了我在進行主從復制時&#xff0c;需要進行密碼驗證&#xff0c;然后我在網上查閱了很多資料&#xff0c;有的說讓在從機中指定密碼&#xff0c;有的說…

一對多聊天室

多人聊天包 由于要先創建服務面板&#xff0c;接收客戶端連接的信息&#xff0c;此代碼使用順序為先啟動服務端&#xff0c;在啟動客戶端&#xff0c;服務端不用關&#xff0c;不然會報錯。多運行幾次客戶端&#xff0c;實現單人聊天 創建服務面板 package yiduiduo;import j…

【頭歌系統數據庫實驗】實驗7 SQL的復雜多表查詢-1

目錄 第1關&#xff1a;求各顏色零件的平均重量 第2關&#xff1a;求北京和天津供應商的總個數 第3關&#xff1a;求各供應商供應的零件總數 第4關&#xff1a;求各供應商供應給各工程的零件總數 第5關&#xff1a;求重量大于所有零件平均重量的零件名稱 第6關&#xff1…

初識人工智能,一文讀懂人工智能概論(1)

&#x1f3c6;作者簡介&#xff0c;普修羅雙戰士&#xff0c;一直追求不斷學習和成長&#xff0c;在技術的道路上持續探索和實踐。 &#x1f3c6;多年互聯網行業從業經驗&#xff0c;歷任核心研發工程師&#xff0c;項目技術負責人。 &#x1f389;歡迎 &#x1f44d;點贊?評論…

Python Django-allauth: 構建全面的用戶身份驗證系統

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com Django-allauth是一個功能強大的Django插件&#xff0c;旨在簡化和定制Web應用程序中的用戶身份驗證和管理。本文將深入介紹Django-allauth的核心功能、基本用法以及實際應用場景&#xff0c;通過豐富的示例代碼…

AWTK 串口屏開發(1) - Hello World

1. 功能 這個例子很簡單&#xff0c;制作一個調節溫度的界面。在這里例子中&#xff0c;模型&#xff08;也就是數據&#xff09;里只有一個溫度變量&#xff1a; 變量名數據類型功能說明溫度整數溫度。范圍 (0-100) 攝氏度 2. 創建項目 從模板創建項目&#xff0c;將 hmi/…

挑選在線客服系統的七大注意事項

越來越多的企業開始注重客戶服務&#xff0c;所以在線客服系統也逐漸成為了電商企業不可或缺的一部分。然而在挑選在線客服系統的過程中&#xff0c;蠻多企業會遇到各種各樣的問題&#xff0c;這就導致了最終選擇的系統并不適合自己企業的需求。接下來我將提醒大家挑選在線客服…

網絡運維與網絡安全 學習筆記2023.12.4

網絡運維與網絡安全 學習筆記 第三十四天 今日目標 訪問存儲設備、配置yum源、使用yum管理軟件 LAMP部署及測試、systemctl系統控制、SELinux-Firewall防護 訪問存儲設備 掛載/卸載設備 什么是掛載? 掛載&#xff0c;裝載 將光盤/U盤/分區/網絡存儲等設備裝到某個Linux目…

mysql中IGNORE 關鍵字段用法

在MySQL中&#xff0c;IGNORE 關鍵字通常與數據修改語句&#xff08;如INSERT、UPDATE和DELETE&#xff09;一起使用&#xff0c;其作用是使得操作在遇到錯誤時不會終止執行&#xff0c;而是忽略錯誤并繼續處理后續的數據。這對于處理可能包含重復鍵值或某些違反約束的批量操作…

ssm(springboot“昭愿”甜品店銷售管理系統 蛋糕商城系統Java

ssm(springboot“昭愿”甜品店銷售管理系統 蛋糕商城系統Java(code&LW) 開發語言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服務器&#xff1a;tomcat 數據庫&#xff1a;mysql 5.7&#xff08;或…

FastAPI如何返回文件字節流?并且附帶一些json參數

文章目錄 GET方法 StreamingResponsePOST方法 StreamingResponse其他關于壓縮 GET方法 StreamingResponse 服務器&#xff1a; from fastapi import FastAPI from fastapi.responses import StreamingResponse from starlette.responses import FileResponse from pydantic i…

pycharm debug的時候變量顯示不出來,一直Collecting data...問題解決

問題描述&#xff1a; 如圖所示&#xff1a;一直加載不出來變量&#xff0c;顯示Collecting data 解決辦法&#xff1a; 在setting中給下圖中的選項打勾 這下就可以了。 應該是調試時候有線程沖突&#xff0c;具體我也不太懂。

springboot(ssm勤工助學管理系統 勤工儉學網站Java(codeLW)

springboot(ssmBBS勤工助學管理系統 勤工儉學網站Java(code&LW) 開發語言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服務器&#xff1a;tomcat 數據庫&#xff1a;mysql 5.7&#xff08;或8.0&…