题目
分析
这道题目的关键,是读懂题意。按照题目的样本输入:
3
10001011
那么构造出来的二叉树是:
graph TD
A["F(10001011)"]
B["F(1000)"]
C["F(1011)"]
D["F(10)"]
E["B(00)"]
F["F(10)"]
G["I(11)"]
H["I(1)"]
I["B(0)"]
J["B(0)"]
K["B(0)"]
L["I(1)"]
M["B(0)"]
N["I(1)"]
O["I(1)"]
A --> B
A --> C
B --> D
B --> E
D --> H
D --> I
E --> J
E --> K
C --> F
C --> G
F --> L
F --> M
G --> N
G --> O
也就是说,这8个字符构成了最下面的左右两个叶子节点,然后逐渐向上构成父节点,再构成父节点……一直到最后的根节点。这是一个完美二叉树。其各层节点数是:\(2^3\rightarrow 2^2\rightarrow 2^1\rightarrow 2^0\)。所以其高度是4
,总共有\(2^4-1=15\)个节点。这15个节点各自有自己的类型(F/B/I
),所以最终要输出15个字符。
后续遍历的顺序是:“左右根”。所以,添加类型字符的顺序也是如此。按照样本数据,输出就是:IBFBBBFIBFIIIFF
。
答案
思考
本题有点意思。