For serialising and deserialising a binary tree( or a n-ary tree ) only preorder traversal with # for Null is used in the given Link but I think both inorder and preorder are required to construct tree.
Please tell me what is that I am missing?
# | User | Rating |
---|---|---|
1 | tourist | 3985 |
2 | jiangly | 3814 |
3 | jqdai0815 | 3682 |
4 | Benq | 3529 |
5 | orzdevinwang | 3526 |
6 | ksun48 | 3517 |
7 | Radewoosh | 3410 |
8 | hos.lyric | 3399 |
9 | ecnerwala | 3392 |
9 | Um_nik | 3392 |
# | User | Contrib. |
---|---|---|
1 | cry | 169 |
2 | maomao90 | 162 |
2 | Um_nik | 162 |
4 | atcoder_official | 161 |
5 | djm03178 | 158 |
6 | -is-this-fft- | 157 |
7 | adamant | 155 |
8 | awoo | 154 |
8 | Dominater069 | 154 |
10 | luogu_official | 150 |
For serialising and deserialising a binary tree( or a n-ary tree ) only preorder traversal with # for Null is used in the given Link but I think both inorder and preorder are required to construct tree.
Please tell me what is that I am missing?
Name |
---|
In a regular tree, both preorder and postorder are required, because you don't know how many children each node has.
In a binary tree, you know that every node will have exactly two children (they can be null). After you read two children from input, you know you need to backtrack to your parent. If you read the deserialise code this should be clear — you recursively scan in the children, and return to the parent of a node if you finished scanning both children.
So, for binary tree as children are fixed (2), so insertion of NULL helps us to construct tree, which is not so in other case. Please say yes if its correct.
BTW if there is n-ary tree with n children (0 for leaves), same procedure of serialise and deserialise work (just preorder with NULL)?
Yeah and yeah.