Rumah > Soal Jawab > teks badan
比如,对于下面这个二叉树,它所有的路径为:
8 -> 3 -> 1
8 -> 2 -> 6 -> 4
8 -> 3 -> 6 -> 7
8 -> 10 -> 14 -> 13
怎么用Java去实现?
阿神2017-04-18 10:53:58
Jika anda tidak memerlukan pengulangan, gunakan kedalaman dahulu!
Menggunakan tindanan, mula-mula tolak nod akar ke tindanan jika tindanan tidak kosong, kemudian keluarkannya dan keluarkan nilai median nod semasa Kemudian tolak subpokok kanan ke tindanan dahulu subpokok kiri ke tindanan , dan kemudian nilai sama ada tindanan itu kosong, gelung...
Langkah-langkahnya adalah seperti berikut:
1) Mula-mula masukkan nod akar pokok binari ke dalam tindanan
2) Nilai sama ada tindanan kosong, dan jika ia tidak kosong, kemudian Pop tindanan dan keluarkan nilai nod pokok timbul
3) Tolak subpokok kanan nod pokok timbul ke tindanan
4 ) Tolak subpokok kiri nod pokok yang timbul ke dalam tindanan
5) Gelung Kembali ke (2)
Ini adalah kaedah yang saya lihat sebelum ini. Saya tertanya-tanya adakah ia boleh membantu penyoal?
public void depthOrderTraversal(){
if(root==null){
System.out.println("empty tree");
return;
}
ArrayDeque<TreeNode> stack=new ArrayDeque<TreeNode>();
stack.push(root);
while(stack.isEmpty()==false){
TreeNode node=stack.pop();
System.out.print(node.value+" ");
if(node.right!=null){
stack.push(node.right);
}
if(node.left!=null){
stack.push(node.left);
}
}
System.out.print("\n");
}
PHP中文网2017-04-18 10:53:58
Gunakan traversal pertama lebar, kemudian simpan semua nod induk nod dalam keadaan dan keluarkan selepas mencapai nod daun.