#include<iostream>
#include <vector>
using namespace std;
struct Node {
int val;
Node* left;
Node* right;
Node() {}
Node(int val_):val(val_) {}
Node(int val_, Node* left_, Node* right_) :val(val_), left(left_), right(right){}
};
//层序数组构建二叉树
Node* ConstructBinaryTree(vector<int>& arr, int len, int i) {
if (arr.empty() || len < 1) return NULL;
Node* root = NULL;
if (i < len && arr[i] != 0 ) {
root = new Node();
if (root == NULL)return NULL;
root->val = arr[i];
root->left = ConstructBinaryTree(arr, len, 2 * i + 1);
root->right = ConstructBinaryTree(arr, len, 2 * i + 2);
}
return root;
}
// 线序遍历
void pre(Node* root) {
if (!root) return;
cout << root->val << endl;
pre(root->left);
pre(root->right);
}
// 深度
int depth(Node* root) {
if (!root) return 0;
return max(depth(root->left), depth(root->right)) + 1;
}
int main() {
vector<int> nums{ 1,2,3,4,5,0,6,7,8,0 };
Node* root;
root=ConstructBinaryTree(nums, nums.size(), 0);
pre(root);
cout << depth(root);
return 0;
}
构建二叉树C++
最新推荐文章于 2024-07-25 12:39:48 发布