二叉树非递归前序遍历(java)

思路

在递归方法中,需要采用一个栈来记录当亲爱按节点以便在完成左子树后能返回到右子树进行遍历,为了模拟相同的操作,首先处理当前节点,在遍历左子树之前,把当前节点保留在栈中,当遍历完左子树后,将该元素出栈,然后找到其右子树进行遍历。持续该过程指导为空

void PreOrderNonRecursive(BinaryTreeNode root){
    
    
  if(root == null){
    
    
    return null;
  }
  LLStack s = new LLStack();
  while(true){
    
    
    while(root != null){
    
    
      System.out.println(root.getData());
      s.push(root);
      root = root.getLeft();
    }
    if(s.isEmpty()){
    
    
      break;
    }
    root = (BinaryTreeNode)s.pop();
    root = root.getRight();
  }
  return;
}

猜你喜欢

转载自blog.csdn.net/weixin_37632716/article/details/109103370