zoukankan      html  css  js  c++  java
  • 二叉树深度遍历和广度遍历

    https://blog.csdn.net/weixin_39912556/article/details/82852749

    package Method;
    
    import java.util.ArrayDeque;
    import java.util.Deque;
    import java.util.Queue;
    import java.util.Stack;
    
    /**
     * Created by joyce on 2019/9/11.
     */
    public class TreeMain {
        private static class TreeNode {
            public TreeNode left;
            public TreeNode right;
            private String val;
            public TreeNode(String _val) {
                val = _val;
            }
            public void echo() {
                System.out.println(val);
            }
    
            public TreeNode setLeft(TreeNode left) {
                this.left = left;
                return this;
            }
    
            public TreeNode setRight(TreeNode right) {
                this.right = right;
                return this;
            }
        }
    
        public static void main(String [] f) {
            TreeNode D = new TreeNode("D");
            TreeNode E = new TreeNode("E");
            TreeNode F = new TreeNode("F");
            TreeNode G = new TreeNode("G");
            TreeNode B = new TreeNode("B").setLeft(D).setRight(E);
            TreeNode C = new TreeNode("C").setLeft(F).setRight(G);
            TreeNode A = new TreeNode("A").setLeft(B).setRight(C);
            DB(A);
            DBD(A);
            WB(A);
    
        }
    
        /**
         * 深度
         * @param root
         */
        public static void DB(TreeNode root) {
            Stack<TreeNode> stack = new Stack<>();
            stack.push(root);
            while (!stack.isEmpty()) {
                TreeNode treeNode = stack.pop();
                treeNode.echo();
                if(treeNode.right != null) {
                    stack.push(treeNode.right);
                }
                if(treeNode.left != null) {
                    stack.push(treeNode.left);
                }
            }
        }
    
        /**
         * 深度 递归
         * @param root
         */
        public static void DBD(TreeNode root) {
            if(root == null)
                return;
            root.echo();
            DBD(root.left);
            DBD(root.right);
        }
    
        /**
         * 广度
         * @param root
         */
        public static void WB(TreeNode root) {
            Deque<TreeNode> deque = new ArrayDeque<>();
            deque.add(root);
            while (!deque.isEmpty()) {
                TreeNode treeNode = deque.remove();
                treeNode.echo();
                if(treeNode.left != null) {
                    deque.add(treeNode.left);
                }
                if(treeNode.right != null) {
                    deque.add(treeNode.right);
                }
            }
        }
    }
    

  • 相关阅读:
    Median Value
    237. Delete Node in a Linked List
    206. Reverse Linked List
    160. Intersection of Two Linked Lists
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted Lists
    477. Total Hamming Distance
    421. Maximum XOR of Two Numbers in an Array
    397. Integer Replacement
    318. Maximum Product of Word Lengths
  • 原文地址:https://www.cnblogs.com/silyvin/p/11505527.html
Copyright © 2011-2022 走看看