天梯賽 樹的遍歷

2021-10-14 16:04:56 字數 1913 閱讀 5854

題目:

錯誤**:

#include

#include

#include

using

namespace std;

string p[35]

;void

lxr(string zx, string hx,

int c)

}void**(

)else

}//cout << endl;

c++;}

}int

main()

}for

(int i =

0; i < n; i++)}

//cout << "zx:" << b << "\n" << "hx:" << a << endl;

lxr(b, a,0)

;**()

;return0;

}

錯誤原因:樣例雖然能過,但是也是碰巧而已,因為樣例剛好都是個位數,沒有十位數甚至更高位數的數字出現,一旦出現我們這個**就會輸出錯誤結果。我們應該保證我們的每乙個數字都是乙個個體,而不是一位數字是乙個個體。因此,我們不能夠盲目的使用string來簡化我們的**。於是,便產生了下面的這個**。ac**:

#include

#include

using

namespace std;

vector<

int> p[35]

;intsb(

int* a)

}return-1

;}intlove

(int

* x,

int c)

}return-1

;}void**(

int* a,

int* b,

int c)

, n[35]

=;int e[35]

=, f[35]

=;for(

int i =

0; i < x; i++

)int cnt =0;

for(

int i = x +

1; i <

35&& b[i]!=0

; i++

) cnt =0;

for(

int i = x; i <

35&& b[i]

!= ch; i++)**

(m, n, c +1)

;**(e, f, c +1)

;}}void

lxr(

)else

} c++;}

}int

main()

, hx[35]

=;cin >> n;

for(

int i =

0; i < n; i++

)for

(int i =

0; i < n; i++

)//cout << sizeof(hx) / sizeof(hx[0]) << " " << sizeof(zx) / sizeof(zx[0]) << endl;

**(zx, hx,0)

;lxr()

;return0;

}

思路:直接就用陣列來儲存我們的數字,利用上述的string的做法,將我們的陣列進行切分操作。

易錯點:我們在切分後序遍歷陣列的第二部分,即乙個根的右孩子的時候,我們不能夠像中序遍歷的那樣,直接從根的下乙個開始到尾巴結束。後續遍歷的右孩子可以看成是從中序遍歷的根的下標位置到結束的前乙個截止。(後序遍歷最後乙個是根節點)。

天梯賽真題 樹的遍歷 遞迴

此題紀念一下一點都不擅長遞迴的我,非要用遞迴的方法來做,靠自己的力量,經過兩個小時最終成功的勵志故事!題意 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三...

天梯賽習題 L2 006 樹的遍歷

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷...

天梯賽 小字輩(樹的遍歷 BFS vector)

include include include include include include include includeusing namespace std define maxn 100010 vectorchild maxn int len 0 int ans 100010 int ma...