利用数组创建二叉树并赋值
生活随笔
收集整理的這篇文章主要介紹了
利用数组创建二叉树并赋值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1:二叉樹的創建與賦值
(1):前言知識
- 這里的創建是利用層序序列進行創建,主要就是根節點的坐標為i 的話 那么左節點的坐標為 2i+1,右節點的坐標為2i+2;
- 開辟一個結構體
- 創建一個這個結構體的實例
(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; */總結
以上是生活随笔為你收集整理的利用数组创建二叉树并赋值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸡蛋酒酿功效与作用有哪些
- 下一篇: 肋骨骨裂应该怎么治疗