当前位置: 首页 > news >正文

阅读网站怎么做潍坊网站建设怎样

阅读网站怎么做,潍坊网站建设怎样,什么是主页,建设快三网站迭代实现二叉树的遍历 迭代法实现前序遍历 前序遍历是中左右&#xff0c;如果还有左子树就一直向下找。完了之后再返回从最底层逐步向上向右找。不难写出如下代码&#xff1a;&#xff08;注意代码中&#xff0c;空节点不入栈&#xff09; public List<Integer>preorde…

       迭代实现二叉树的遍历

迭代法实现前序遍历

 前序遍历是中左右,如果还有左子树就一直向下找。完了之后再返回从最底层逐步向上向右找。不难写出如下代码:(注意代码中,空节点不入栈)

public List<Integer>preorderTraversal(TreeNode root){
List<Integer>res = new ArrayList<Integer>();
if(root == null){return res;
}
Deque<TreeNode> stack = new LinkedList<TreeNode>();
TreeNode node = root;
while(!stack.isEmpty() || node != null){while(node != null){res.add(node.val);stack.push(node);node = node.left;}node = stack.pop();node = node.right;
}
return res;
}

迭代法实现中序遍历

 再看中序遍历,中序遍历是左中右,先访问的是二叉树左子树的节点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理节点(也就是在把节点的数值放进s列表中)。在使用迭代法写中序遍历,就需要借用指针的遍历来帮助访问节点,栈则用来处理节点上的元素。看代码:

public List<Integer>inorderTraversal(TreeNode root){
List<Integer> res = new ArrayList<Integer>();
Deque<TreeNode> stack = new LinkedList<TreeNode>();
while (root != null || !stack.isEmpty()){while (root != null){stack.push(root);root root.left;}root = stack.pop();res.add(root.val);root root.right;
}
return res;
}

迭代法实现后序遍历

 后序遍历的非递归实现有三种基本的思路:反转法、访问标记法、和Mos法,可惜,三种理解起来都有些难度。
 访问标记法是最难理解的方法,而Mos法是一个老外发明的巧妙思想:不使用栈,而是用好树中的null指针,但是实现后序仍然非常麻烦,我们这里不再展开,感兴趣的同学可以查一下,
 这里分享一种好理解又好实现的方法:反转法。如下图,我们先观察后序遍历的结果是seq={95743},如果我们将其整体反转的话就是new_seq={34759}。
截屏2023-12-03 15.38.58.png
 得到new_seql的方法和前序遍历思路几乎一致,只不过是左右反了。前序是先中间,再左边然后右边,而这里是先中间,再后边然后左边。那我们完全可以改造一下前序遍历,得到序列new_seq之后再reverse一下就是想要的结果了,代码如下:

public List<Integer>postorderTraversal(TreeNode root){
List<Integer>res = new ArrayList<>();
if (root == null)return res;
Stack<TreeNode>stack = new stack<>();
TreeNode node = root;
while(!stack.isEmpty() || node != null){while(node != null){res.add(node.val);stack.push(node);node = node.right; //是right不是left}node stack.pop();node node.left;
}
//注意反转要用Collections
Collections.reverse(res);
return res;
}
http://www.15wanjia.com/news/158447.html

相关文章:

  • app与网站的区别是什么做网站是先做后台还是前端
  • 自己做游戏app的网站吗网站付费功能描述
  • 做网站开发哪里好wordpress 显示选项
  • 网站主机和空间wordpress $wp
  • python基础教程网易seo成创网络
  • 网站免费大全江山做网站
  • 建筑设计招标网站html5登录界面完整代码
  • 网站开发目录过多的缺点办公楼网络设计方案
  • 珠海专业网站建设价格做网站用花生壳哪个版本
  • 申请一个域名可以做多少网站包小盒设计网站官网
  • 网站建设硬件环境潍坊外贸网站优化
  • html5网站正在建设中电子商务有限公司经营范围
  • 陇南市建设局网站公示优秀企业网站建设
  • 关于网站建设的指标重庆市建设工程信息网官网造价
  • 西安企业网站设计公司商业公司的域名
  • 昌平区做网站wordpress 三站合一
  • 做教育集团的网站西安优秀高端网站建设服务商
  • 北安网站设计东莞网站建设aj工作室
  • app需要申请网站的子域名吗东莞网站建设流程
  • 投资集团网站建设方案湛江seo排名外包
  • 做教程网站如何查用户搜索it外包行业现状及发展趋势
  • 网站建设初步规划书台州做网站的公司有哪些公司
  • 武穴市网站两学一做网站开发者morz
  • h5网站制作平台网站精准ip接口怎么做
  • 做网站需要什么特色wordpress自定义seo
  • 网站开发内容怎么写视频多的网站建设
  • 海口小学网站建设西安建网站价格
  • 网站防火墙怎么做做网站时如何确定网站主题
  • 开通网站费可以做待摊费用吗建网站什么赚钱
  • 淘宝联盟交钱建设网站个人中心页面模板