题目
一、如何本地化运行这段代码
1.1 通过数组构建二叉树【层序遍历的思想】
int array[ ] = { 1 } ;
void createTree ( struct TreeNode * * node, int index)
{
if ( index<= ( sizeof ( array) ) / sizeof ( int ) )
{
if ( array[ index- 1 ] == NULL )
{
* node= NULL ;
return ;
}
else
{
* node = ( struct TreeNode * ) malloc ( sizeof ( struct TreeNode ) ) ;
( * node) -> val= array[ index- 1 ] ;
createTree ( & ( ( * node) -> left) , index* 2 ) ;
createTree ( & ( ( * node) -> right) , index* 2 + 1 ) ;
}
}
else
{
* node= NULL ;
return ;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
1.2 力扣上提交的最大深度算法【递归角度】
int maxDepth ( struct TreeNode * node)
{
if ( node== NULL )
{
return 0 ;
}
int left_length = maxDepth ( node-> left) + 1 ;
int right_length = maxDepth ( node-> right) + 1 ;
return ( left_length>= right_length) ? left_length: right_length;
}
二、完整代码及运行结果
1.完整代码
# include <stdio.h>
# include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode * left;
struct TreeNode * right;
} ;
int maxDepth ( struct TreeNode * node)
{
if ( node== NULL )
{
return 0 ;
}
int left_length = maxDepth ( node-> left) + 1 ;
int right_length = maxDepth ( node-> right) + 1 ;
return ( left_length>= right_length) ? left_length: right_length;
}
int array[ ] = { 1 } ;
void createTree ( struct TreeNode * * node, int index)
{
if ( index<= ( sizeof ( array) ) / sizeof ( int ) )
{
if ( array[ index- 1 ] == NULL )
{
* node= NULL ;
return ;
}
else
{
* node = ( struct TreeNode * ) malloc ( sizeof ( struct TreeNode ) ) ;
( * node) -> val= array[ index- 1 ] ;
createTree ( & ( ( * node) -> left) , index* 2 ) ;
createTree ( & ( ( * node) -> right) , index* 2 + 1 ) ;
}
}
else
{
* node= NULL ;
return ;
}
}
int main ( ) {
struct TreeNode * root;
createTree ( & root, 1 ) ;
printf ( "The depth is:%d\n" , maxDepth ( root) ) ;
return 0 ;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
2. 运行结果
总结
理解力扣代码中二叉树代码的本地化运行【C语言】; 理解求取最大深度算法中的递归算法;