Depth-first Search -- Leetcode problem104. Maximum Depth of Binary Tree

来源:互联网 发布:c语言平方根号怎么表示 编辑:程序博客网 时间:2024/06/08 18:09
  • 描述:Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

树的结构:

/**
Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
*/

  • 分析:这道题是要寻找一棵二叉树的深度

  • 思路一:用DFS递归实现。

class Solution {public:    int maxDepth(TreeNode* root) {        if (root == NULL) return 0;        return 1 + max(maxDepth(root -> left), maxDepth(root -> right));    }};
  • 思路二:用BFS非递归实现。
class Solution {public:    int maxDepth(TreeNode* root) {        if (root == NULL) return 0;        queue <TreeNode*> my_queue;        my_queue.push(root);        int count = 0;        while(!my_queue.empty()) {            int n = my_queue.size();            count++;            for (int i = 0; i < n; i++) {                TreeNode *temp = my_queue.front();                my_queue.pop();                if (temp -> left != NULL) {                    my_queue.push(temp -> left);                }                if (temp -> right != NULL) {                    my_queue.push(temp -> right);                }            }        }        return count;    }};
原创粉丝点击