二叉樹的題目

目錄

1、將遍歷的結果放在list中

2、判斷兩棵樹是否相同

3、翻轉二叉樹

4、判斷平衡二叉樹

5、判斷二叉樹是否對稱

6、判斷是否為完全二叉樹


先創建一個二叉樹

public class BinaryTree {static class TreeNode {public char val;public TreeNode left;public TreeNode right;public TreeNode(char val) {this.val = val;}}public TreeNode creatTree() {TreeNode A = new TreeNode('A');TreeNode B = new TreeNode('B');TreeNode C = new TreeNode('C');TreeNode D = new TreeNode('D');TreeNode E = new TreeNode('E');TreeNode F = new TreeNode('F');TreeNode G = new TreeNode('G');TreeNode H = new TreeNode('H');A.left = B;A.right = C;B.left = D;B.right = E;C.left = F;C.right = G;E.right = H;return A;}

1、將遍歷的結果放在list中

將前序遍歷的結果存儲在list中

public class Solution {public List<Character>preorderTraversal(BinaryTree.TreeNode root){List<Character>list=new ArrayList<>(); //創建一個Listif (root==null){return list;}list.add(root.val); //將根放入List<Character>leftTree=preorderTraversal(root.left); //根的左子樹list.addAll(leftTree);List<Character>rightTree=preorderTraversal(root.right); //根的右子樹list.addAll(rightTree);return list;}}

2、判斷兩棵樹是否相同

要判斷兩棵樹是否相同,要同時判斷根是否相同,然后判斷兩棵樹的左子樹是否相同和右子樹是否相同。

public class Solution {boolean isSameTree(BinaryTree.TreeNode p, BinaryTree.TreeNode q){if ((p!=null&&q==null)||(p==null&&q!=null)){return false;}if (p==null&&q==null){return true;}if (p.val!= q.val){return false;}return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);}}

3、翻轉二叉樹

class Solution{public BinaryTree.TreeNode invertTree(BinaryTree.TreeNode root){if (root==null){return null;}if (root.left==null && root.right==null){return root;}BinaryTree.TreeNode tmp=root.left;root.left=root.right;root.right=tmp;invertTree(root.left);invertTree(root.right);return root;}}

4、判斷平衡二叉樹

class Solution{public boolean isBalance(BinaryTree.TreeNode root){if (root==null){return true;}int leftHeight=getHeight(root.left);int rightHeight=getHeight(root.right);return Math.abs(leftHeigh-rightHeigh<1&&isBalance(root.left)&&isBalance(root.right);}//求二叉樹的高度int getHeight(BinaryTree.TreeNode root){if (root==null){return 0;}int leftHeightDepth=getHeight(root.left);int rightHeightDepth=getHeight(root.right);return leftHeightDepth>rightHeightDepth?leftHeightDepth+1:rightHeightDepth+1;}}

5、判斷二叉樹是否對稱

class Solution{public boolean isSymmetric(BinaryTree.TreeNode root){if (root==null){return true;}return isSymmetricChild(root.left,root.right);}private boolean isSymmetricChild(BinaryTree.TreeNode leftTree, BinaryTree.TreeNode rightTree){if ((leftTree!=null&&rightTree==null)||(leftTree==null&&rightTree!=null)){return false;}if (leftTree==null&&rightTree==null){return true;}if (leftTree.val!=rightTree.val){return false;}return 
isSymmetricChild(leftTree.left,rightTree.right)&&isSymmetricChild(leftTree.right,rightTree.left);}}

6、判斷是否為完全二叉樹

class Solution{boolean isCompleteTree(BinaryTree.TreeNode root){if (root==null){return true;}Queue<BinaryTree.TreeNode>queue=new LinkedList<>();queue.offer(root);while (!queue.isEmpty()){BinaryTree.TreeNode cur=queue.poll();if (cur!=null){queue.offer(cur.left);queue.offer(cur.right);}else {break;}}while (!queue.isEmpty()){BinaryTree.TreeNode tmp=queue.peek();if (tmp==null){queue.poll();}else {return false;}}return true;}}

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

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

相關文章

NextJs 系列文章

NextJs 系列文章 NextJs 初級篇 - 安裝 | 路由 | 中間件NextJs 渲染篇 - 什么是CSR、SSR、SSG、ISR 和服務端/客戶端組件NextJs 數據篇 - 數據獲取 | 緩存 | Server Actions

使用Java實現通用樹形結構轉換工具類:深入解析TreeUtil和TreeNode接口

文章目錄 一、TreeNode接口設計二、TreeUtil工具類設計三、示例&#xff1a;實現TreeNode接口的節點類四、示例&#xff1a;使用TreeUtil構建樹形結構五、總結 &#x1f389;歡迎來到Java學習路線專欄~探索Java中的靜態變量與實例變量 ☆* o(≧▽≦)o *☆嗨~我是IT陳寒&#x1…

基于vue腳手架創建的圖書商城

功能簡介 此項目包括首頁, 搜索列表, 商品詳情, 購物車, 訂單, 支付, 用戶登陸/注冊等多個子模塊&#xff0c;使用 Vue 全家 桶ES6WebpackAxios 等技術&#xff0c;采用模塊化、組件化、工程化的模式開發。 功能模塊圖 2.1首頁 2.2.搜索列表 2.3.商品詳情 2.4.購物車 2.5.支…

條件測試,if語句,case語句

測試命令 格式1&#xff1a;test 條件表達式 格式2&#xff1a;[條件表達式] test命令和 [ ] 相同&#xff0c;建議使用[ ] #方框中要空格 #用test可能會不小心定義變量文件測試 常見的測試操作符含義-d檢查文件是否存在且為目錄-f檢查文件是否存在且為常規文件-L測試…

解決json日期格式問題

解決json日期格式問題 1.json默認輸出時間格式 RequestMapping("/json3") public String json3() throws JsonProcessingException {ObjectMapper mapper new ObjectMapper();//創建時間一個對象&#xff0c;java.util.DateDate date new Date();//將我們的對象解…

Knife4j:快速入門

1. 概述 Knife4j是一個用于生成和展示API文檔的工具&#xff0c;同時它還提供了在線調試的功能&#xff0c;下圖是其工作界面。 * Knife4j有多個版本&#xff0c;最新版的Knife4j基于開源項目springdoc-openapi&#xff0c;這個開源項目的核心功能就是根據SpringBoot項目中的代…

uniapp uniCloud云開發

uniCloud概述 uniCloud 是 DCloud 聯合阿里云、騰訊云、支付寶云&#xff0c;為開發者提供的基于 serverless 模式和 js 編程的云開發平臺。 uniCloud 的 web控制臺地址&#xff1a;https://unicloud.dcloud.net.cn 文檔&#xff1a;https://doc.dcloud.net.cn/uniCloud/ un…

大模型應用-多模態和大模型是如何相互成就的

前言 如果單純的將大模型用來聊天&#xff0c;那就是low了。 而多模態賦予了大模型更多的現實價值&#xff0c;大模型則助力多模態變得更強大。 多模態 我們所處的是一個物理世界&#xff0c;不同事物之間模態多種多樣&#xff0c;即便是簡單的文本&#xff0c;按照語言&am…

【Docker0】網絡更改

目錄 1. 停止docker服務 2. 關閉docker默認橋接網絡接口 3. 從系統刪除docker0接口 4. 創建一個名為bridge0的新接口 5. 添加ip地址和子網掩碼 6. 啟用bridge0接口 7. &#xff08;如果沒起來就執行該句&#xff09; 8. 查看ip 1. 停止docker服務 sudo service docker…

c++用什么軟件編程?都有哪些?

c用什么軟件編程&#xff1f;都有哪些&#xff1f; C 作為一種高效、面向對象的編程語言&#xff0c;廣泛應用于軟件開發、游戲開發、嵌入式系統等領域。那么在進行 C 編程時&#xff0c;我們通常會使用哪些軟件呢&#xff1f;下面就來具體分析。 1. Visual Studio Visual Stu…

深入 SSH:解鎖本地轉發、遠程轉發和動態轉發的潛力

文章目錄 前言一、解鎖內部服務&#xff1a;SSH 本地轉發1.1 什么是 SSH 本地轉發1.2 本地轉發應用場景 二、打開外部訪問大門&#xff1a;SSH 遠程轉發2.1 什么是 SSH 遠程轉發2.2 遠程轉發應用場景 三、動態轉發&#xff1a;SSH 讓你擁有自己的 VPN3.1 什么是 SSH 動態轉發3.…

mysqldump全備份之后,如何只恢復一個庫或者一個表

在實際工作中,一個MySQL實例中可能有多個database。而我們備份時,通常采用完全備份,將所有database都備份到一個文件中。 但是,偶爾會遇到只恢復一個database或者一個表的情況。怎么解決呢? 一、利用全備恢復一個庫(database)的數據 案例:朋友在群里問, MySQL全庫備份…

memory動態內存管理學習之weak_ptr

此頭文件是動態內存管理庫的一部分。std::weak_ptr 是一種智能指針&#xff0c;它持有對被 std::shared_ptr 管理的對象的非擁有性&#xff08;“弱”&#xff09;引用。在訪問所引用的對象前必須先轉換為 std::shared_ptr。std::weak_ptr 用來表達臨時所有權的概念&#xff1a…

three.js實現雪花場景效果

點擊獲取雪花圖片素材 提取碼:lywa // 雪花效果 import * as THREE from "three" export function getsnowEffect(th) {console.log(th, th) // this 場景var that th// 創建一個BufferGeometry對象&#xff0c;用于存儲頂點數據 const geometry new THREE.Buffe…

Vim神兵:精通自定義補全規則

標題&#xff1a;Vim神兵&#xff1a;精通自定義補全規則 摘要 Vim作為Linux上最強大的文本編輯器之一&#xff0c;其補全功能可以極大提高編碼效率。本文將詳細探討如何在Vim中自定義補全規則&#xff0c;包括基本的補全設置、使用Vim腳本擴展補全功能&#xff0c;以及如何利…

大模型微調實戰之基于星火大模型的群聊對話分角色要素提取挑戰賽:Task01:跑通Baseline

目錄 0 背景1 環境配置1.1 下載包1.2 配置密鑰1.3 測試模型 2 解決問題2.1 獲取數據2.2 設計Prompt2.2 設計處理函數2.3 開始提取 附全流程代碼 0 背景 Datawhale AI夏令營第二期開始啦&#xff0c;去年有幸參與過第一期&#xff0c;收獲很多&#xff0c;這次也立馬參與了第二…

VMware ESXi 技術

目錄 一、VMware ESXi安裝 1. 在VMware WorkStation中創建一臺虛擬機 2. 進入VMware ESXi控制臺 3. 配置VMware ESXi網絡 二、使用Web網頁端登錄管理ESXi 1. 分配許可證密鑰&#xff08;選做&#xff09; 2. 管理ESXi 三、VMware ESXi控制臺 1. 創建虛擬機 2. 定制虛擬…

Webpack: 開發 PWA、Node、Electron 應用

概述 毋庸置疑&#xff0c;對前端開發者而言&#xff0c;當下正是一個日升月恒的美好時代&#xff01;在久遠的過去&#xff0c;Web 頁面的開發技術鏈條非常原始而粗糙&#xff0c;那時候的 JavaScript 更多用來點綴 Web 頁面交互而不是用來構建一個完整的應用。直到 2009年5月…

LINUX操作系統:Mx Linux,用虛擬機VMware Workstation安裝體驗

需求說明&#xff1a; 操作系統目前流行有Windows、Linux、Unix等&#xff0c;中國人應該要知道國有操作系統&#xff0c;也要支持國產操作系統&#xff0c;為了更好支持國產操作系統&#xff0c;我們也要知己知彼&#xff0c;那么今天就來體驗一把操作系統Mx_Linux_23.2的安裝…

分享一個下載windows系統鏡像包的網站

下載各種操作系統&#xff08;比如Windows、Linux、MacOS等&#xff09;比較快的鏡像站點&#xff0c;我嘗試過這個不錯&#xff0c;提供了BT連接&#xff0c;可以用迅雷軟件下載&#xff0c;速度很快的&#xff01; 入口地址&#xff1a;NEXT, ITELLYOU 1&#xff09;打開網站…