Skip to content
面试面试
主页
使用指南
Java
计算机网络
操作系统
多线程
数据库
JVM
Spring
系统设计
主题文档open in new window

    文章 1

    江鸟2022年1月1日小于 1 分钟约 203 字

    此页内容
    • 标题 2
      • 标题 3

    # 文章 1

    # 标题 2

    这里是内容。

    import java.util.*;
    class Main{
      public static void main(String[] args){
    
      }
      // 模拟函数调用栈
      private Stack<TreeNode> stk = new Stack<>();
    
      // 左侧树枝一撸到底
      private void pushLeftBranch(TreeNode p) {
          while (p != null) {
              /*******************/
              /** 前序遍历代码位置 **/
              /*******************/
              stk.push(p);
              p = p.left;
          }
      }
    
      public List<Integer> traverse(TreeNode root) {
          // 指向上一次遍历完的子树根节点
          TreeNode visited = new TreeNode(-1);
          // 开始遍历整棵树
          pushLeftBranch(root);
    
          while (!stk.isEmpty()) {
              TreeNode p = stk.peek();
    
              // p 的左子树被遍历完了,且右子树没有被遍历过
              if ((p.left == null || p.left == visited) 
                && p.right != visited) {
                  /*******************/
                  /** 中序遍历代码位置 **/
                  /*******************/
                  // 去遍历 p 的右子树
                  pushLeftBranch(p.right);
              }
              // p 的右子树被遍历完了
              if (p.right == null || p.right == visited) {
                  /*******************/
                  /** 后序遍历代码位置 **/
                  /*******************/
                  // 以 p 为根的子树被遍历完了,出栈
                  // visited 指针指向 p
                  visited = stk.pop();
              }
          }
      }
    }
    
    

    # 标题 3

    这里是内容。 ::: info

    123
    

    :::

    编辑此页open in new window
    上次编辑于: 2022/5/19 09:24:13
    贡献者: zdh119
    默认页脚
    Copyright © 2022 江鸟