Rumah  >  Soal Jawab  >  teks badan

算法 - 如何不用递归 列出 树(多叉) 中根节点到叶节点的所有路径(Java)

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

8 -> 3 -> 1

8 -> 2 -> 6 -> 4

8 -> 3 -> 6 -> 7

8 -> 10 -> 14 -> 13

怎么用Java去实现?

天蓬老师天蓬老师2743 hari yang lalu598

membalas semua(4)saya akan balas

  • 阿神

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

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 10:53:58

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

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:53:58

    Kedalaman dahulu? . .

    balas
    0
  • PHP中文网

    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.

    balas
    0
  • Batalbalas