算法 - 如何不用递归 列出 树(多叉) 中根节点到叶节点的所有路径(Java)
天蓬老师
天蓬老师 2017-04-18 10:51:58
0
4
635

比如,对于下面这个二叉树,它所有的路径为:

8 -> 3 -> 1

8 -> 2 -> 6 -> 4

8 -> 3 -> 6 -> 7

8 -> 10 -> 14 -> 13

怎么用Java去实现?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(4)
阿神

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");  
    }  
Ty80

Ganti rekursi dengan tindanan: https://zh.coursera.org/learn...

大家讲道理

Kedalaman dahulu? . .

洪涛

Gunakan traversal pertama lebar, kemudian simpan semua nod induk nod dalam keadaan dan keluarkan selepas mencapai nod daun.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan