Tree_Graph はバイナリ ツリー @CareerCup のバランスをとるかどうかを決定します
バイナリ ツリーのバランスが取れているかどうかを確認する関数を実装します。この質問の目的では、バランスの取れたツリーは、ノードの 2 つのサブツリーの高さが 1 を超えないようなツリーとして定義されます。
バランスのとれたバイナリ ツリーの定義は、空のツリーであるか、その左右のサブツリー間の高さの差の絶対値が 1 を超えず、左右のサブツリーが両方ともバランスのとれたバイナリ ツリーであることです。
もの:
1) 最初に再帰的な木の高さ関数を作成し、次にサブツリーの高さの差が 1 より大きいかどうかを確認します
2) 最適化: 木の高さを求める再帰関数にサブツリーの高さの差が 1 より大きいかどうかをチェックするロジックを組み込み、不均衡が発生した場合に適切なタイミングで戻ります。
注:
この質問は、ツリーのバランスが取れているかどうか (このツリーの 2 つの葉ノードとルート ノードの間の距離の差が 1 以下であるかどうか) を尋ねることとは異なります。
vcD4KPHA+PGJyPgo8L3A+CjxwPsjnyc/NvKOszqrGvbritv6y5sr3o6y1q7K7xr264qGjPC9wPgo8cD7F0LbP0ru/w8r3yse38ca9uuK/ydLUx/PK97XE1+6087jftsi6zdfu0K G437bI1q6y7srHt/G089PaMaGjPC9wPgo8cD7H88r3tcTX7tChuN+2yL/Jss6/vKO6aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmlnaHRmb3J5b3VyZHJlYW0vYXJ0aWNsZS9kZXRhaWxzLz EyO DUxMjMxPC9wPgo8cD48YnI+CjwvcD4KPHA+we3Su9bWveK3qMrHv8nS1NPD1tDQ8rHpw PrH87XDyvfA77XEw7/Su7j20rbX07XEuN+2yKOsyLu687/JtcOhozwvcD4KPHA+ss6/vKO6 aHR0cDovL2hhd3N0ZWluLmNvbS9wb3N0cy80LjEuaHRtbDwvcD4KPHA+PGJyPgo8L3A+CjxwPs/Cw +bKx8XQts/Kx7fxxr264rb +subK97XEtPrC66O6PC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">パッケージ Tree_Graph;
CtCILibrary.AssortedMethods をインポートします。
CtCILibrary.TreeNode をインポートします。
パブリック クラス S4_1 {
// ツリーが平衡二分木であるかどうかを再帰的に判断します
// 時間: O(N^2)
public static boolean isBalanced(TreeNode root) {
if (root == null) {
true を返します。
}
int heightDiff = getHeight(root.left) - getHeight(root.right);
if(Math.abs(heightDiff) > 1) { // アンバランス
false を返します。
} それ以外 {
return isBalanced(root.left) && isBalanced(root.right);
}
}
// 木の高さを再帰的に取得します
public static int getHeight(TreeNode root) {
if (root == null) {
0を返します。
}
return Math.max(getHeight(root.left), getHeight(root.right)) + 1;
}
// ========================== 改善版 最適化版
//高さを計算する際にバランスが取れているかどうかを判定するロジックをcheckHeight関数に入れます。
// エッジがバランスしているかどうかを判断し、そうでない場合は直接 -1 を返します。
// 時間: O(N)、空間: O(H)、H: 木の高さ
public static boolean isBalanced2 (TreeNode ルート) {
if (checkHeight(root) == -1) {
false を返します。
} それ以外{
true を返します。
}
}
// バランスが取れているかを判断しながら高さを計算します
public static int checkHeight (TreeNode ルート) {
if (root == null) {
0を返します。
}
int leftHeight = checkHeight(root.left);
if (leftHeight == -1) {
-1 を返します。
}
int rightHeight = checkHeight(root.right);
if (rightHeight == -1) {
-1 を返します。
}
int heightDiff = leftHeight - rightHeight;
if (Math.abs(heightDiff) > 1) {
-1 を返します。
}
Math.max(leftHeight, rightHeight) + 1 を返します。
}
public static void main(String[] args) {
// バランスのとれたツリーを作成する
int[] 配列 = {1、2、3、4、5、6、7、8、9、10};
TreeNode ルート = TreeNode.createMinimalBST(array);
System.out.println("ルート? " + root.data);
System.out.println("バランスは取れていますか? " + isBalanced(root));
// 実際にはバランスが取れている可能性もありますが、その可能性は非常に低いです...
TreeNode のアンバランス = new TreeNode(10);
for (int i = 0; i

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Machine Power Report 編集者: Wu Xin 国内版の人型ロボット + 大型模型チームは、衣服を折りたたむなどの複雑で柔軟な素材の操作タスクを初めて完了しました。 OpenAIのマルチモーダル大規模モデルを統合したFigure01の公開により、国内同業者の関連動向が注目を集めている。つい昨日、中国の「ヒューマノイドロボットのナンバーワン株」であるUBTECHは、Baidu Wenxinの大型モデルと深く統合されたヒューマノイドロボットWalkerSの最初のデモを公開し、いくつかの興味深い新機能を示した。 Baidu Wenxin の大規模モデル機能の恩恵を受けた WalkerS は次のようになります。 Figure01 と同様に、WalkerS は動き回るのではなく、机の後ろに立って一連のタスクを完了します。人間の命令に従って服をたたむことができる

ファンクションとは、関数を意味します。これは、特定の関数を備えた再利用可能なコード ブロックです。プログラムの基本コンポーネントの 1 つです。入力パラメータを受け取り、特定の操作を実行し、結果を返すことができます。その目的は、再利用可能なコード ブロックをカプセル化することです。コードの再利用性と保守性を向上させるコード。

Tree は、ディレクトリの内容をツリー形式で再帰的にリストするコマンド ライン ツールです。これにより、すべてのディレクトリ、サブディレクトリ、およびファイルが階層形式でリストされ、それによってファイルとフォルダの組織構造が視覚的に表示されます。 Windows および Linux システムでの Tree のインストールと使用方法 Linux での Tree のインストールと使用 Linux での Tree のインストール: aptupdate&&aptinstalltree 以下は、tree コマンドの一般的な使用方法です。 #指定したパスの下のディレクトリ ツリーを表示しますtree/d/temp#最大表示深度を制限しますtree-L3#ディレクトリのみを表示し、ファイルは表示しませんtree-d#隠しファイルとディレクトリを含めて表示しますtr

この記事では、Python の enumerate() 関数と「enumerate()」関数の目的について学びます。 enumerate() 関数とは何ですか? Python の enumerate() 関数は、データ コレクションをパラメータとして受け取り、列挙オブジェクトを返します。列挙オブジェクトはキーと値のペアとして返されます。キーは各項目に対応するインデックス、値は項目です。構文 enumerate(iterable,start) パラメータ iterable - 渡されたデータ コレクションは、iterablestart と呼ばれる列挙オブジェクトとして返すことができます。 - 名前が示すように、列挙オブジェクトの開始インデックスは start によって定義されます。無視したら

MySQL.proc テーブルの役割と機能の詳細な説明。MySQL は人気のあるリレーショナル データベース管理システムです。開発者が MySQL を使用する場合、多くの場合、ストアド プロシージャ (StoredProcedure) の作成と管理が必要になります。 MySQL.proc テーブルは非常に重要なシステム テーブルであり、ストアド プロシージャの名前、定義、パラメータなど、データベース内のすべてのストアド プロシージャに関連する情報が保存されます。この記事では、MySQL.proc テーブルの役割と機能について詳しく説明します。

Vue の使い方と機能.use Function Vue は、多くの便利な機能を提供する人気のフロントエンド フレームワークです。その 1 つは Vue.use 関数で、これを使用すると Vue アプリケーションでプラグインを使用できるようになります。この記事では、Vue.use 関数の使い方と機能を紹介し、いくつかのコード例を示します。 Vue.use 関数の基本的な使用法は非常に簡単です。Vue がインスタンス化される前に関数を呼び出し、使用するプラグインをパラメータとして渡すだけです。簡単な例を次に示します。 // プラグインの導入と使用

file_exists メソッドは、ファイルまたはディレクトリが存在するかどうかを確認します。チェックするファイルまたはディレクトリのパスを引数として受け取ります。これは、ファイルを処理する前に存在するかどうかを知る必要がある場合に役立ちます。これにより、新しいファイルを作成するときに、この関数を使用してファイルがすでに存在するかどうかを確認できます。構文 file_exists($file_path) パラメータ file_path - 存在をチェックするファイルまたはディレクトリのパスを設定します。必須。 return file_exists() メソッドが戻ります。ファイルまたはディレクトリが存在する場合は TrueFalse を返し、ファイルまたはディレクトリが存在しない場合は TrueFalse を返します。 例として、「candidate.txt」ファイルのチェックを見てみましょう。

js関数関数の使い方は、1. 関数の宣言、2. 関数の呼び出し、3. 関数のパラメータ、4. 関数の戻り値、5. 無名関数、6. パラメータとしての関数、7. 関数のスコープ、8. 再帰関数です。
