/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/intget_depth(structTreeNode*node){if(node ==NULL)return0;int left =get_depth(node->left);int right =get_depth(node->right);if(node->left ==NULL&& node->right !=NULL)return1+ right;if(node->right ==NULL&& node->left !=NULL)return1+ left;return1+(left < right ? left : right);}intminDepth(structTreeNode* root){returnget_depth(root);}
222. 完全二叉树的节点个数
解: 递归
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/intgetnode(structTreeNode*node){if(node ==NULL)return0;int left =getnode(node->left);int right =getnode(node->right);return1+ left + right;}intcountNodes(structTreeNode* root){returngetnode(root);}
解: 层序遍历
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/structqueue{int front, back;structTreeNode*array[100000];};intcountNodes(structTreeNode* root){structqueue*que =(structqueue*)malloc(sizeof(*que));int num =0;structTreeNode*node = root;memset(que,0,sizeof(*que));
que->front = que->back =0;if(node ==NULL)return num;
que->array[que->back++]= node;while(que->front != que->back){int cur = que->back;
num += que->back - que->front;while(cur != que->front){
node = que->array[que->front++];if(node->left) que->array[que->back++]= node->left;if(node->right) que->array[que->back++]= node->right;}}return num;}