网站静态页面做网站,赣州万图网络科技有限公司,html5用什么软件,做ppt的兼职网站双端队列#xff1a;双向队列#xff1a;支持插入删除元素的线性集合。 java官方文档推荐用deque实现栈#xff08;stack#xff09;。
pop(): 弹出栈中元素#xff0c;也就是返回并移除队头元素#xff0c;等价于removeFirst()#xff0c;如果队列无元素#xff0c;则…双端队列双向队列支持插入删除元素的线性集合。 java官方文档推荐用deque实现栈stack。
pop(): 弹出栈中元素也就是返回并移除队头元素等价于removeFirst()如果队列无元素则发生NoSuchElementException push(): 向栈中压入元素也就是向队头增加元素等价于addFirst()如果元素为null则发生NPE如果栈空间受到限制则发生IllegalStateException
代码
public void inOrderByStack(Node node) {System.out.println(中序非递归遍历);Deque stacknew LinkedList();//创建一个双端队列Node current root;while (current!null||!stack.isEmpty()){//栈非空while(current!null){stack.push(current);//把current压zhancurrentcurrent.leftChild;//把current的左孩子节点赋值给它}if (!stack.isEmpty()) {current (Node) stack.pop();//栈非空就出栈System.out.println(current.value);currentcurrent.rightChild;//遍历右孩子}}}
二叉树图如下 root节点Node1,把Node1的值赋值给current,current 值不为null
把current 值压栈Node1的值压栈Node4的值赋值给curent stack.push(current);//把current压zhancurrentcurrent.leftChild; 再判断4是否为null把4的值压栈currentnull(Node4 )没有左孩子
判断为否定跳出循环
stack非空cuurrent 等于刚被压栈的Node4输出Node4并且把Node5的值赋值给current
再次回到第一个循环 while(current!null){stack.push(current);//把current压zhancurrentcurrent.leftChild;//把current的左孩子节点赋值给它} Node5压栈然后把null赋值给curent
再次判断不满足此时current为Node5,输出5再把Node5的右孩子赋值给current
经过while循环判断
while (current!null||!stack.isEmpty())
stack非空继续执行while
把null值压栈currentnull的左孩子还是null
判断if还是非空那么把Node1的值赋值给current并且输出1,
把1的右孩子赋值给current,不再赘述