在一个遥远的魔法森林里,住着一位勇敢的小精灵。传说这片森林里隐藏着一座神秘的宝藏,而宝藏的位置由一棵特殊的二叉树决定。这棵树的每个节点上都刻有一个字符,可能是字母或数字。
小精灵的任务是按照中序遍历的方式找到这些节点,并将它们按顺序排列出来。所谓中序遍历,就是先访问左子树,再访问根节点,最后访问右子树。
为了帮助小精灵完成任务,你需要编写一个程序,模拟这个中序遍历的过程。程序的输入包括两部分:
第一行是一个整数 n(0<=n<=1000),表示二叉树的节点总数。 第二行包含 n 个字符,依次表示二叉树从根节点开始的各层节点的值。 如果某个节点为空(用字符 '0' 表示),则跳过它,不参与遍历。
最终,程序需要输出:
二叉树的高度。 按照中序遍历顺序排列的所有非空节点的值。
n c1 c2 c3 ... cn
(n 是一个正整数,表示二叉树的节点总数。ci 是一个字符,表示第 i 个节点的值。如果值为 '0',表示该节点为空。)
height result
(height 是二叉树的高度。result 是按照中序遍历顺序排列的非空节点值,用空格分隔。)
8 A B C D E F G H
4 H D B E A F C G
5 A B 0 C D
3 C B D A
注意:没有结点时不需要输出二叉树深度