查找二叉树的最大深度 - 非递归版
#include <iostream>
#include <vector>
using namespace std;
struct Node{
int val;
Node *left;
Node *right;
Node(){
left = NULL;
right = NULL;
}
};
int slove(Node *root){
if(root==NULL){
return 0;
}
vector<int> count;
vector<Node *>extend;
count.push_back(0);
extend.push_back(root);
for(int i=0;i<(int)extend.size();){
Node *cur = extend[i];
if (cur==NULL){
i++;
continue;
}
if (cur->left && cur->right){
count[i] +=1;
extend[i] = cur->left;
count.push_back(count[i]);
extend.push_back(cur->right);
}else if(cur->left){
count[i] +=1;
extend[i] = cur->left;
}else if(cur->right){
count[i] +=1;
extend[i] = cur->right;
}else{
count[i] +=1;
extend[i] = NULL;
}
}
int max = -1;
for(int i=0;i<count.size();i++){
if(max==-1||count[i]>max){
max = count[i];
}
}
return max;
}
int main() {
Node root;
root.val = 1;
Node left;
left.val = 2;
root.left = &left;
Node leftleft;
leftleft.val = 3;
left.left = &leftleft;
std::cout<<slove(&root)<<std::endl;
cout << "Hello World!" << endl;
}