日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用数组创建二叉树并赋值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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; */

總結

以上是生活随笔為你收集整理的利用数组创建二叉树并赋值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。