力扣面試150題--完全二叉樹的節點個數

Day 51

題目描述

在這里插入圖片描述

思路

根據完全二叉樹的規律,完全二叉樹的高度可以直接通過不斷地訪問左子樹就可以獲取,判斷左右子樹的高度:
1. 如果相等說明左子樹是滿二叉樹, 然后進一步判斷右子樹的節點數(最后一層最后出現的節點必然在右子樹中)
2. 如果不等說明右子樹是深度小于左子樹的滿二叉樹, 然后進一步判斷左子樹的節點數(最后一層最后出現的節點必然在左子樹中

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public int countNodes(TreeNode root) {if(root==null){return 0;}int left=findhigh(root.left);int right=findhigh(root.right);if(left==right){return (int)Math.pow(2,left)+countNodes(root.right);//左子樹是滿二叉樹,右子樹是完全二叉樹}else{return (int)Math.pow(2,right)+countNodes(root.left);//右子樹是少一層的滿二叉樹,左子樹是完全二叉樹}}public int findhigh(TreeNode root){int high=0;while(root!=null){root=root.left;high++;}return high;}
}

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

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

相關文章

社區造數服務接入MCP|得物技術

一、背景 ? 今年 MCP 的概念非常火,市面上也涌現出了一大批 MCP 相關工具。作為技術一線者,都會按捺不住地去實操一下,很早的時候就有個設想,如果把我們的測試工具都改造為符合 MCP 服務協議標準,然后全部接入 AI A…

Mysql 查詢時間段內的sql優化

Mysql 查詢時間段內的sql優化 一說寫到查詢某個時間段的sql查詢,我們就會使用DATE_FORMAT函數格式化日期字段: 比如查詢某年某月的數據,我們可能常用的方式如下 DATE_FORMAT(pay_time,%Y-%m)=DATE_FORMAT(now(),%Y-%m) 但是這樣做會使索引失效,尤其在數據量越來越多的情況…

用 Deepseek 寫的 html+js 密碼生成器

下面是一個功能完整的密碼生成器HTMLJS實現&#xff0c;包含數字、小寫字母、大寫字母、符號、避免重復字符和密碼長度設置功能。 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&…

WPF綁定

如何使用綁定去改變事件驅動的關系。 先介紹一下標簽擴展 目錄 控件與控件之間的綁定 代碼分析 綁定語法詳解 1. Binding - 綁定標記 2. ElementName=slider - 綁定源 3. Path=Value - 綁定路徑 不同控件屬性的默認模式: 控件和屬性綁定 1. 數據模型類的作用 2. 窗…

同源“平滑思想”的問題解法:正則化與拉普拉斯平滑

同源“平滑思想”的問題解法&#xff1a;正則化與拉普拉斯平滑 在機器學習和概率模型的實踐中&#xff0c;正則化與拉普拉斯平滑是兩個看似無關的技術&#xff1a;前者用于防止模型過擬合&#xff0c;后者用于解決零概率問題。但如果深入理解它們的核心邏輯&#xff0c;會發現…

用 AI 讓學習更懂你:如何打造自動化個性化學習系統?

用 AI 讓學習更懂你:如何打造自動化個性化學習系統? 在這個信息爆炸的時代,傳統的學習方式已經難以滿足個體化需求。過去,我們依賴固定的教學課程,所有學生按照統一進度進行學習,但每個人的學習節奏、興趣點和理解方式都不盡相同。而人工智能(AI)正在徹底改變這一局面…

PyQt學習系列08-插件系統與模塊化開發

PyQt學習系列筆記&#xff08;Python Qt框架&#xff09; 第八課&#xff1a;插件系統與模塊化開發 &#xff08;原課程規劃中的第12課&#xff0c;按用戶要求調整為第9課&#xff09; 課程目標 掌握Qt插件系統的原理與開發方法實現可擴展的模塊化應用程序理解QPluginLoader動…

rlemasklib 安裝筆記

目錄 windows 安裝&#xff0c;沒成功 報錯筆記&#xff1a; windows 安裝&#xff0c;沒成功 anslation_unit.obj -Wno-cpp -Wno-unused-function -stdc99 -O3 cl: 命令行 error D8021 :無效的數值參數“/Wno-cpp” error: command C:\\Program Files\\Microso…

Ubuntu 系統grub日志級別設置

在 Ubuntu 系統中&#xff0c;GRUB 的日志級別主要與內核日志級別&#xff08;loglevel&#xff09;相關&#xff0c;而不是 GRUB 自身的日志級別。內核日志級別通常從 0 到 7&#xff0c;其中 0 是最高級別&#xff08;最嚴重&#xff09;&#xff0c;7 是最低級別&#xff08…

【前端】使用HTTPS

在前端本地開發環境中使用 HTTPS 主要取決于你用的是哪個構建工具&#xff08;如 Vite、Webpack、Vue CLI 等&#xff09;。 目錄 ViteWebpack本地生產環境 npx serve瀏覽器提示“不安全”解決方法上傳github注意不要把key傳上去 Vite npm install --save-dev types/node #安…

Python 包管理工具 uv的一些常用指令

1.如何安裝uv&#xff1a; 在Windows下&#xff0c;執行下面的指令&#xff1a; powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" 安裝很快&#xff0c;安裝完成后&#xff0c;會出現&#xff1a; 接著&#xff0c;我們運行指…

行為型:策略模式

目錄 1、核心思想 2、實現方式 2.1 模式結構 2.2 實現案例 3、優缺點分析 4、適用場景 5、優化技巧 1、核心思想 目的&#xff1a;將算法&#xff08;行為&#xff09;抽象出來作為一系列策略類&#xff0c;使他們可以相互替換&#xff0c;使系統擁有“可插拔”擴展的能…

計算機網絡學習20250524

協議 格式—語法&#xff1a;數據結構或格式&#xff08;怎么做&#xff09;次序—時序&#xff1a;事件實現的順序&#xff08;做的順序&#xff09;行為動作—語義&#xff1a;發出什么控制信息&#xff0c;完成何種動作、做出何種應答 網絡結構 網絡邊緣&#xff1a;主機…

Github 2025-05-24 Rust開源項目日報 Top10

根據Github Trendings的統計,今日(2025-05-24統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Rust項目10TypeScript項目2Dart項目1Tauri: 構建小型、快速和安全的桌面應用程序 創建周期:1673 天開發語言:Rust協議類型:Apache License 2…

數據結構之堆(topk問題、堆排序)

一、堆的初步認識 堆雖然是用數組存儲數據的數據結構&#xff0c;但是它的底層卻是另一種表現形式。 堆分為大堆和小堆&#xff0c;大堆是所有父親大于孩子&#xff0c;小堆是所有孩子大于父親。 通過分析我們能得出父子關系的計算公式&#xff0c;parent(child-1)/2&#xff…

0基礎 Git 代碼操作

將代碼提交倉庫&#xff1a; 準備工作? ?注冊 Gitee 賬號?&#xff1a;確保你已注冊并登錄 Gitee。?創建倉庫?&#xff1a;在 Gitee 上新建一個空倉庫&#xff08;如果尚未創建&#xff09;&#xff1a; 點擊右上角 → 新建倉庫。填寫倉庫名稱、描述&#xff0c;選擇公…

OpenAI大模型不聽人類指令事件的技術分析與安全影響

OpenAI大模型不聽人類指令事件的技術分析與安全影響 OpenAI大模型o3確實存在不遵從人類關閉指令的現象&#xff0c;這一行為已被第三方安全機構驗證&#xff0c;但其本質是技術缺陷而非AI意識覺醒。帕利塞德研究所的測試顯示&#xff0c;在100次實驗中o3有7次成功繞過關閉指令…

軟件工程期末速成--附帶幾道題

軟件工程中的各種設計 瀑布模型&#xff1a; 定義&#xff1a;將軟件生存周期的各項活動規定為依照固定順序連接的若干階段工作&#xff0c;形如瀑布流水&#xff0c;最終得到軟件產品 系統流程圖&#xff1a;系統流程圖是描繪物理系統的傳統工具&#xff0c;它的基本思想是用…

免費分享50本web全棧學習電子書

最近搞到一套非常不錯的 Web 全棧電子書合集&#xff0c;整整 50 本&#xff0c;都是epub電子書格式&#xff0c;相當贊&#xff01;作為一個被期末大作業和項目 ddl 追著跑的大學生&#xff0c;這套書真的救我狗命&#xff01; 剛接觸 Web 開發的時候&#xff0c;我天天對著空…

嵌入式學習筆記——day26

文件操作&#xff08;續&#xff09;目錄操作 一、文件操作 1. lseek lseek 是一個用于在文件中移動文件指針的系統調用&#xff0c;通常用于在文件描述符所指向的文件中定位讀取或寫入的位置。它允許程序在文件中隨機訪問數據&#xff0c;而不是只能順序讀取或寫入。 off_t …