二叉搜索树的遍历,老规矩,用数组来模拟(当然可以实际建一个二叉搜索树,其实也不会麻烦,只是要操作地址总感觉不太放心),然后递归进行前中序遍历。
Run Time: 0sec
Run Memory: 348KB
Code length: 1487Bytes
Submit Time: 2012-01-05 01:00:36
// Problem#: 3702
// Submission#: 1174141
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include <iostream>
#include <cstring>
using namespace std;
struct Node {
int data;
int left, right;
} node[ 3001 ];
void preorder( int n ) {
if ( n != 0 ) {
cout << node[ n ].data << " ";
preorder( node[ n ].left );
preorder( node[ n ].right );
}
}
void inorder( int n ) {
if ( n != 0 ) {
inorder( node[ n ].left );
cout << node[ n ].data << " ";
inorder( node[ n ].right );
}
}
int main()
{
int m;
int i, j;
while ( cin >> m && m ) {
cin >> node[ 1 ].data;
node[ 1 ].left = 0;
node[ 1 ].right = 0;
for ( i = 2; i <= m; i++ ) {
cin >> node[ i ].data;
node[ i ].left = 0;
node[ i ].right = 0;
j = 1;
while ( j != 0 ) {
if ( node[ i ].data < node[ j ].data ) {
if ( node[ j ].left == 0 ) {
node[ j ].left = i;
j = 0;
}
else
j = node[ j ].left;
}
else {
if ( node[ j ].right == 0 ) {
node[ j ].right = i;
j = 0;
}
else
j = node[ j ].right;
}
}
}
inorder( 1 );
cout << endl;
preorder( 1 );
cout << endl;
}
return 0;
}
本文介绍如何使用数组实现二叉搜索树的前序和中序遍历,通过递归方法构建和遍历树结构。
799

被折叠的 条评论
为什么被折叠?



