欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

利用数组创建二叉树并赋值

发布时间:2023/12/4 编程问答 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 利用数组创建二叉树并赋值 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1:二叉树的创建与赋值

(1):前言知识

  • 这里的创建是利用层序序列进行创建,主要就是根节点的坐标为i 的话 那么左节点的坐标为 2i+1,右节点的坐标为2i+2;
  • 开辟一个结构体
struct Node {int val;Node * left;Node * right;Node () : val(-1),left(NULL),right(NULL) {};Node(int x) : val(x),left(NULL),right(NULL) {}; }node;
  • 创建一个这个结构体的实例
Node* node = new Node(3);//3传入的val值

(2):代码演示

/**思路:1.建树思路,我们是将要输入的数装进一个数组当中,如果某个结点是空结点的话,那就将其 赋值位-12.我们创建一个函数,函数的返回类型为该树,函数的参数为数组和我们的数组下标 3.通过观察我们发现一个数组的的根结点为 i 的话 那么的左孩子结点为:2*i+1; 右孩子结点为:2*i+2; */#include<bits/stdc++.h> using namespace std;//typedef struct Node* TreeNode; struct Node {int val;Node* left;Node* right;Node(): val(-1),left(NULL),right(NULL){};Node(int x) : val(x),left(NULL),right(NULL){}; };//根据层序序列进行输入 Node* createNode(vector<int>& v,int index) {if(index > v.size()-1) return NULL;Node* node = new Node(v[index]); // node->val = v[index];node->left = createNode(v,index*2+1);node->right = createNode(v,index*2+2);return node; } void preorder(Node* root) {if(root == NULL) return ;cout << root->val<< ' ';if(root->left != NULL) preorder(root->left);if(root->right != NULL) preorder(root->right); } int main() {vector<int> v;int n;cin >> n;for (int i = 0; i < n; i++) {int nums;cin >> nums;v.push_back(nums);}Node* node;node = createNode(v,0);preorder(node);} /** 7 1 2 3 -1 4 5 -1前序输出 1 2 -1 4 3 5 -1; */

总结

以上是生活随笔为你收集整理的利用数组创建二叉树并赋值的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。