Sicily 3702. 二叉搜索树的遍历

来源:互联网 发布:matlab矩阵符号运算 编辑:程序博客网 时间:2024/06/08 11:26

二叉搜索树的遍历,老规矩,用数组来模拟(当然可以实际建一个二叉搜索树,其实也不会麻烦,只是要操作地址总感觉不太放心),然后递归进行前中序遍历。

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;}                                 


 

原创粉丝点击