博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程--binary tree postorder traversal(后序遍历二叉树)
阅读量:4115 次
发布时间:2019-05-25

本文共 845 字,大约阅读时间需要 2 分钟。

Given a binary tree, return the postorder traversal of its nodes' values.

For example:

Given binary tree {1,#,2,3},

1    \     2    /   3

return [3,2,1].

后序遍历:根据左右根的顺序遍历的,用递归的方法就比较简单了

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector
s; vector
postorderTraversal(TreeNode *root) { if(root==NULL) { return s; } postorderTraversal(root->left);//左子树 postorderTraversal(root->right);//右子树 s.push_back(root->val);//根 return s; }};

非递归的思路:

1.遍历树的左子树,并且压栈,直到左子树为空

2.左子树为空时,就记录栈顶元素,如果栈顶元素的右子树为空或者栈顶元素的右子树为上一次已经被后序遍历完树的根时,就把压入栈的元素,出栈,并且打印出来。同时记录上一次已经被后序遍历完树的根等于栈顶元素                            

3.  用同样的方法遍历右子树。     

后序遍历结果为4 6 5 2 3 1

                       

你可能感兴趣的文章
vue 遍历对象并动态绑定在下拉列表中
查看>>
Vue动态生成el-checkbox点击无法选中的解决方法
查看>>
python __future__
查看>>
MySQL Tricks1
查看>>
python 变量作用域问题(经典坑)
查看>>
pytorch
查看>>
pytorch(二)
查看>>
pytorch(三)
查看>>
pytorch(四)
查看>>
pytorch(5)
查看>>
pytorch(6)
查看>>
ubuntu相关
查看>>
C++ 调用json
查看>>
nano中设置脚本开机自启动
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>