1. 程式人生 > >Leetcode-919 Complete Binary Tree Inserter(完全二叉樹插入器)

Leetcode-919 Complete Binary Tree Inserter(完全二叉樹插入器)

style end for leetcode pty let turn val 進行

 1 vector<TreeNode> ve(16385,0);
 2 class CBTInserter
 3 {
 4     public:
 5         queue<TreeNode*> q;
 6         int veEnd;
 7         
 8         CBTInserter(TreeNode* root)
 9         {
10             TreeNode rubbish(0);
11             veEnd = 0;
12             ve[veEnd++] = (rubbish);
13 q.push(root); 14 Init(); 15 for(int i = 2; i < veEnd; i ++) 16 { 17 if((i&0x1)==1) 18 { 19 ve[i/2].right = &ve[i]; 20 } 21 else 22 { 23 ve[i/2
].left = &ve[i]; 24 } 25 } 26 // cout << "??" << ve.size() << endl; 27 } 28 29 int insert(int v) 30 { 31 TreeNode t(v); 32 ve[veEnd++] = (t); 33 if((veEnd%2)==1) 34 { 35
ve[(veEnd-1)/2].left = &ve[veEnd-1]; 36 } 37 else 38 { 39 ve[(veEnd-1)/2].right = &ve[veEnd-1]; 40 } 41 return ve[(veEnd-1)/2].val; 42 } 43 44 TreeNode* get_root() 45 { 46 return &ve[1]; 47 } 48 49 void Init() 50 { 51 while(!q.empty()) 52 { 53 TreeNode t = *(q.front()); 54 ve[veEnd++] = (*(q.front())); 55 if(q.front()->left) 56 q.push(q.front()->left); 57 if(q.front()->right) 58 q.push(q.front()->right); 59 q.pop(); 60 } 61 } 62 };

嗶了狗,一直忘記vector開辟空間以後會把所有元素的地址進行變動,然後瘋狂debug

Leetcode-919 Complete Binary Tree Inserter(完全二叉樹插入器)