質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Q&A

解決済

3回答

17997閲覧

二分木の深さを求める

nnryu

総合スコア38

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

1グッド

1クリップ

投稿2015/07/18 15:05

編集2015/07/20 14:37

c

1#include <stdio.h> 2typedef struct node{ 3struct node *left; 4struct node *right; 5int data; 6}NODE; 7 8NODE *insert(NODE *tree,int x){ 9if(tree==NULL){ 10tree =(NODE *)malloc(size of(NODE)); 11tree->left =NULL; tree->right =NULL; tree->data=x; 12}else if(x<tree->data) tree->left = insert(tree->left,x); 13else tree->right = insert(tree->right,x); 14return tree; 15} 16 17int maxDepth(NODE *tree){ 18if(tree==NULL) { return(-1); } 19else { 20if(.........) 21return.........; 22else return.........; 23} 24}

というプログラムで二分木の深さMaxDepthを求めたいのですが.......の部分が解りません。
どなたかよろしくお願いします。

皆様回答ありがとうございます。
確かに皆様のコードで実現可能なのですが、このプログラムは穴抜きの問題でして、......以外の部分には書けないのです。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

参考情報:

つまり、

  • if(p==NULL){ return 0; } とする。
  • max(右の子要素の深さ, 左の子要素の深さ) + 1 して、その要素の深さを求めるように再帰で計算する。

で計算できるとおもいます。

投稿2015/07/18 22:51

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

コメントで補足しましたが、以下のような形で実装できないでしょうか?

C

1int maxDepth(NODE *tree){ 2if(tree==NULL) { return(-1); } 3else { 4/* 右の深さと左の深さを比較 */ 5if(.........) 6/* 右の深さが大きい場合は、右の深さ+1 */ 7return.........; 8/* 左の深さが大きい場合は、左の深さ+1 */ 9else return.........; 10} 11}

投稿2015/07/21 11:03

ko-hatanaka

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こういうふうに書いたら、分からないですかね。

C

1int maxDepth(NODE *tree){ 2 if(tree==NULL) { return(-1); } 3 else { 4 int leftDepth = ....; 5 int rightDepth = ....; 6 if( .... ) 7 return .........; 8 else 9 return .........; 10 } 11}

投稿2015/07/18 16:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問