前序,中序,後序遍曆Java實現(遞迴演算法)

來源:互聯網
上載者:User

一道HP的面試題,拿來複習下遞迴:

import java.util.Stack;/** * @author gl65293 * */public class TreeTest {    public static void main(String[] args) {        Noder root = Noder.init();                System.out.println("DLR:");        Noder.preOrder(root);        System.out.println("");        System.out.println("LDR:");        Noder.inOrder(root);        System.out.println("");        System.out.println("LRD:");        Noder.postOrder(root);             }}class Noder {    private String name;    private Noder leftNoder;    private Noder rightNoder;        public Noder(String name, Noder leftNoder, Noder rightNoder) {        this.name = name;        this.leftNoder = leftNoder;        this.rightNoder = rightNoder;    }    public static Noder init() {        Noder D = new Noder("D",null,null);        Noder E = new Noder("E",null,null);        Noder F = new Noder("F",null,null);        Noder G = new Noder("G",null,null);        Noder B = new Noder("B",D,E);        Noder C = new Noder("C",F,G);        Noder A = new Noder("A",B,C);        return A;    }        public static void printNode(Noder noder){        System.out.print(noder.getName()+" ");    }        public static void preOrder(Noder noder){        if(noder != null){            printNode(noder);            preOrder(noder.getLeftNoder());            preOrder(noder.getRightNoder());        }    }        public static void inOrder(Noder noder){        if(noder != null){            inOrder(noder.getLeftNoder());            printNode(noder);            inOrder(noder.getRightNoder());        }    }        public static void postOrder(Noder noder){        if(noder != null){            postOrder(noder.getLeftNoder());            postOrder(noder.getRightNoder());            printNode(noder);        }    }        public static void stackPreOrder(Noder noder){        Stack<Noder> stack = new Stack<Noder>();        if(noder != null){            stack.push(noder);            while(!stack.empty()){                noder = stack.pop();                printNode(noder);                if(noder.getRightNoder()!=null){                    stack.push(noder.getRightNoder());                }                if(noder.getLeftNoder()!=null){                    stack.push(noder.getLeftNoder());                }            }        }    }        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Noder getLeftNoder() {        return leftNoder;    }    public void setLeftNoder(Noder leftNoder) {        this.leftNoder = leftNoder;    }    public Noder getRightNoder() {        return rightNoder;    }    public void setRightNoder(Noder rightNoder) {        this.rightNoder = rightNoder;    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.