Algorithm 遍历树-如何首先打印边
如果我有一棵树,如下所示:Algorithm 遍历树-如何首先打印边,algorithm,tree,binary-tree,tree-traversal,Algorithm,Tree,Binary Tree,Tree Traversal,如果我有一棵树,如下所示: A Root Level / \ / \ G Z Level 1 / \ / \ / \ / \ C D T J Level 2 我有三个问题: 如何遍历此树,以便首先打印级别1节点,然后打印根级别节点,然后打印级别2节点 G、 Z,A,C,D,T,
A Root Level
/ \
/ \
G Z Level 1
/ \ / \
/ \ / \
C D T J Level 2
我有三个问题:
- 如何遍历此树,以便首先打印级别1节点,然后打印根级别节点,然后打印级别2节点 G、 Z,A,C,D,T,J
- 如何遍历此树,以便首先打印级别1节点,然后打印级别2节点,然后打印根级别节点 G、 Z,C,D,T,J,A
- 如何遍历此树,以便首先打印级别2节点,然后打印级别1节点,然后打印根级别节点 C、 D,T,J,G,Z,A
我正在浏览维基百科上的一篇文章,我想起了一个老问题,有一次我在采访中被问到。我相信问题是上述三个问题之一(很可能是第一个或第二个) 前序遍历:访问子树之前的根
void preorder( BTREE__NODE_p_t node )
if ( node != NULL )
visit( node )
preorder( node->left )
preorder( node->right )
void postorder( BTREE__NODE_p_t node )
if ( node != NULL )
postorder( node->left )
postorder( node->right )
visit( node )
顺序遍历:在访问子树之间访问根
void inorder( BTREE__NODE_p_t node )
if ( node != NULL )
inorder( node->left )
visit( node )
inorder( node->right )
后序遍历:访问子树后访问根
void preorder( BTREE__NODE_p_t node )
if ( node != NULL )
visit( node )
preorder( node->left )
preorder( node->right )
void postorder( BTREE__NODE_p_t node )
if ( node != NULL )
postorder( node->left )
postorder( node->right )
visit( node )
需要明确的是,您希望算法是通用的,比如适用于n个级别或仅适用于3个级别,因为逻辑上的差异非常大。您可能对此感兴趣:。如果有四个级别,您希望发生什么?