递归
1 2 3 4 5 6 7 8 9 10
|
int (TreeNode* root) { if (root == nullptr) { return 0; } int leftTree = maxDepth (root->left); int rightTree = maxDepth (root->right); return max (leftTree, rightTree) + 1; }
|
当前节点的最大深度 = 左右子树最大深度的较大者 + 1
迭代
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
|
int (TreeNode* root) { if (root == nullptr) { return 0; } queue<TreeNode*> level; level.push(root); int depth = 0; while (!level.empty()) { depth++;
int n = level.size();
for (int i = 0; i < n; i++) { TreeNode* node = level.front(); level.pop(); if (node->left != nullptr) { level.push(node->left); } if (node->right != nullptr) { level.push(node->right); } } }
return depth; }
|
迭代时间8ms 明显 优于 递归的24ms
近期评论