前序Preorder: 先访问根节点,然后访问左子树,最后访问右子树。子树递归同理 中序Inorder: 先访问左子树,然后访问根节点,最后访问右子树. 后序Postorder:先访问左子树,然后访问右子树,最后访问根节点. class Node: def __init__(self, key): self.left = None self.right = None self.val = key def prin...
65publicstaticvoidinOrder(TreeNode root){66if(root ==null)return;67inOrder(root.left);68visit(root);69inOrder(root.right);70}7172publicstaticvoidinOrder2(TreeNode root){73if(root ==null)return;74Stack<TreeNode> stack =newStack<TreeNode>();75while(!stack.empty() || root !=null){76...
for inorder and level order tranvese, we needs to use a cur pointer on root but for pre and post order, we only needs to push the root. Core statement: while statement: preorder: while stack is not empty: pop() and added cur.val, stack.pop(cur.right) stack.pop(cur.left) postor...
更为简洁非递归解法 具体程序如下: 1vector<int> preorderTraversal(TreeNode*root) {2vector<int>rVec;3if(!root)4returnrVec;56stack<TreeNode *>st;7st.push(root);8while(!st.empty())9{10TreeNode *tree =st.top();11rVec.push_back(tree->val);12st.pop();13if(tree->right)14st.push(...
Tree Tranverse: Pre/In/Post/Level Order tranverse Preorder: 迭代写法: class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); if(root == null) return res; //we need to check it is null or not...
Inorder 方法一:和Preorder方法一类似,直接做,但是需要一个计数器,第二次出栈的时候才可以输出。 classSolution {public: vector<int> inorderTraversal(TreeNode*root) { vector<int>res;if(root==NULL)returnres; unordered_map<TreeNode *,int> hash;//default value is 0;stack<TreeNode *>s({root})...
tree traversal 分为四种。 void BinaryTree<T>::preOrder(TreeNode * cur) { if (cur != NULL) { yell(cur->data); // yell is some imaginary function preOrder(cur->left); preOrder(cur->right); } } void BinaryTree<T>::inOrder(TreeNode * cur) { ...
preorder用栈两三下就写完了 1vector<int> preorderTraversal(TreeNode *root) {2vector<int>nodes;3if(root == NULL)returnnodes;4stack<TreeNode *>tStack;5tStack.push(root);6while(!tStack.empty()){7TreeNode *top =tStack.top();8nodes.push_back(top->val);9tStack.pop();10if(top->right...
postorderTraversal(result, root.left); postorderTraversal(result, root.right); result.add(root.val); } public void inorderTraversal(List<Integer> result, TreeNode root){ if(root==null) return; inorderTraversal(result, root.left); result.add(root.val); ...
Traverse right preorder(root.right) root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) print("Inorder traversal ") inorder(root) print("\nPreorder traversal ") preorder(root) print("\nPostorder traversal ") postorder(...