perl實現二叉樹

2021-09-06 04:39:51 字數 1906 閱讀 4702

最開始寫的**,每個結點用乙個匿名雜湊來表示,可惜執行時錯誤。。。**如下

use strict ;

use warnings ;

sub create_tree ;

my$n6 = ;

my$n5 = ;

my$n7 = ;

my$n2 = ;

my$n4 = ;

my$n1 = ;

return

$n1 ;

}sub print_tree , "

\n" ;

if ($root->) ) ;

}if($root->) ) ;}}

}sub main

&main() ;

1 ;

修改一下就可以了,因為$n8, $n6等本來就是引用,當他們作為其他結點的葉子結點時,不用再加\了,修改如下:

use strict ;

use warnings ;

sub create_tree ;

my$n6 = ;

my$n5 = ;

my$n7 = ;

my$n2 = ;

my$n4 = ;

my$n1 = ;

return

$n1 ;

}sub print_tree , "

\n" ;

if ($root->) ) ;

}if($root->) ) ;}}

}sub main

&main() ;

1

心血來潮,又試了另外一種方法,結點用實名雜湊表示,當結點作為其他結點的子結點時,用引用表示,此法雖不簡潔,但可執行

use strict ;

use warnings ;

sub create_tree

sub print_tree , "

\n" ;

if ($root->) ) ;

}if($root->) ) ;}}

}sub main

&main() ;

1

一時興起,又試了一種方法,此法更簡單,直接按樹形構造雜湊表。

use strict ;

use warnings ;

sub create_tree ,

'right

' => ,

'value

' => 6,},'

value

' => 2,},'

right

' => ,

'right

' => undef,

'value

' => 4,},'

value

' => 1,

) ;return \%root;

}sub print_tree , "

\n" ;

&print_tree($root->) ;

&print_tree($root->) ;}}

sub main

&main() ;

1

閒來無事,又寫了一種方法:這應該是最好的方法了。

use strict ;

use warnings ;

sub node ;

return

$self ;

}sub create_tree

sub print_tree , "

\n" ;

&print_tree($root->) ;

&print_tree($root->) ;}}

sub main

&main() ;

1 ;

還有其他方法麼?

== the end ==

二叉樹實現

include include include include define maxsize 100 define ok 1 define error 0 define true 1 define false 0 typedef int status typedef int telemtype ty...

二叉樹實現

課內最近學了二叉樹,參考書上的 做了二叉樹的實現,尚不完善,還有很多地方不明白。二叉樹實現。define maxsize 100 include using namespace std 定義二叉樹節點 class btnode void createbt btnode bt,char str voi...

二叉樹實現

pragma once include include typedef char btdatatype typedef struct binarytreenode btnode include queue.h 通過前序遍歷的陣列 abd e h cf g 構建二叉樹 btnode binarytre...