給定陣列按要求生成樹
假設給你一個非負整數且不重複的序列 如{1,2,3,4}生成的樹
根節點自己設定 值為-1 那麼它有4個子結點 分別為1 2 3 4
我們將4個結點稱為父序列
在每個結點中都要生成 父序列中不包含父結點 的子結點 如果父序列除去父結點外沒有元素 就不生成
例如 結點1生成的子結點為2 3 4
每個子結點都要繼續產生子結點 直到無法生產。
#include <iostream>
#include <string>
using namespace std;
std::string foo( const int buf[], size_t bufsize, const std::string& prefix="" )
{
if( bufsize == 0 )
return {};
std::string result = std::to_string(buf[0]) + '\n';
for( size_t i=1; i!=bufsize; ++i )
result += prefix + (i+1!=bufsize?"├─":"└─") + foo( buf+i, bufsize-i, prefix+"│ " );
return result;
}
int main( void )
{
int a[] = { -1, 1, 2, 3, 4 };
cout << foo(a,std::size(a)) << endl;
int b[] = { -1, 1, 0 };
cout << foo(b,std::size(b)) << endl;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007056/viewspace-2793836/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 給定一個按非遞減順序排序的整數陣列 A,返回每個數字的平方組成的新陣列,要求也按非遞減順序排序。排序陣列
- 陣列中查詢給定值陣列
- python實現給定一個數和陣列,求陣列中兩數之和為給定的數Python陣列
- LeetCode題解(0330):按要求補齊陣列(Python)LeetCode陣列Python
- Leetcode 陣列中和為給定值的最長子陣列LeetCode陣列
- 樹狀陣列陣列
- PHP 陣列轉樹結構/樹結構轉陣列PHP陣列
- onethink支援給session設定陣列值嗎?Session陣列
- 給定陣列中找到最大的兩個數陣列
- 解析樹狀陣列陣列
- laravel 按照whereIn中給定陣列順序輸出Laravel陣列
- 樹狀陣列詳解陣列
- 樹狀陣列基礎陣列
- poj 2481 樹狀陣列陣列
- hdu 3874 樹狀陣列陣列
- 二維樹狀陣列陣列
- JS陣列學習之判斷陣列元素是不是都滿足給定條件JS陣列
- 【leetcode】34. Search for a Range 給定陣列的給定值的下標範圍LeetCode陣列
- 【.NET 與樹莓派】矩陣按鍵樹莓派矩陣
- 面試題:陣列按列排序的問題面試題陣列排序
- 有一個已經排好序的陣列。現輸入一個數,要求按原來的規律將它插入陣列中。陣列
- 樹狀陣列模板題 & (樹狀陣列 1:單點修改,區間查詢)陣列
- 樹狀陣列和逆序對陣列
- hdu 5147 樹狀陣列陣列
- 樹狀陣列快速入門陣列
- PHP 實現按奇偶排序陣列PHP排序陣列
- 將一個陣列賦值給另外一個陣列陣列賦值
- 給出分數陣列,得到對應的名次陣列陣列
- 1.找出元素 item 在給定陣列 arr 中的位置陣列
- 面試最常問的陣列轉樹,樹轉陣列 c++ web框架paozhu實現面試陣列C++Web框架
- JavaScript split() 分割字串生成陣列JavaScript字串陣列
- 陣列快速生成range的方法陣列
- javascript陣列定義JavaScript陣列
- 線段樹+差分——【模板】樹狀陣列2陣列
- hdu 4836 The Query on the Tree(線段樹or樹狀陣列)陣列
- 面試題:給定陣列a,找到最大的j-i, 使a[j]>a[i]面試題陣列
- 樹狀陣列模板+習題集陣列
- 雙陣列字典樹(Double Array Trie)陣列