inorder 和postorder共同点就是他们从右往左能够找到最右边的treenode,而preorder 和inorder共同点就是他们能够找到最左边的treenode,所以从左往右开始递归。 最后一个相似的题就是给你preorder, postorder, 让你重建tree,preorder: root, left, right. postorder: left, right, root. 这时候你依然发现可以从左...
前序Preorder: 先访问根节点,然后访问左子树,最后访问右子树。子树递归同理 中序Inorder: 先访问左子树,然后访问根节点,最后访问右子树. 后序Postorder:先访问左子树,然后访问右子树,最后访问根节点. classNode:def__init__(self,key):self.left=Noneself.right=Noneself.val=keydefprintInorder(root):ifroot...
*/classSolution{public List<Integer>preorderTraversal(TreeNode root){List<Integer>result=newLinkedList<>();TreeNode current=root;TreeNode prev=null;while(current!=null){if(current.left==null){result.add(current.val);current=current.right;}else{// has left, then find the rightmost of left su...
1classTreeNode{2chardata;3TreeNode left;4TreeNode right;5staticintleaf;6staticbooleanflag=true;7TreeNode (charc){8data =c;9}10TreeNode (TreeNode n){11data =n.data;12left =n.left;13right =n.right;14}1516publicstaticvoidvisit(TreeNode n){17if(n ==null)18System.out.print("");19...
1、preorder + inorder 第一个版本,使用坐标范围: 1/**2* Definition for binary tree3* struct TreeNode {4* int val;5* TreeNode *left;6* TreeNode *right;7* TreeNode(int x) : val(x), left(NULL), right(NULL) {}8* };9*/10classSolution {11public:12TreeNode *build(vector<int> ...
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...
二叉树的先序遍历(preorder),中序遍历(inorder),后序遍历(postorder),二叉树的基础定义可自行百度。二叉树的遍历方法,根据数据节点的先后顺序,可分成3种方式,假设一个节点的,左孩子为L,根节点为D,右孩子为R,那么访问顺序有3中。DLR先序,LDR中序,LRD后序(
1 preorder: 节点入栈一次, 入栈之前访问。 2 inorder:节点入栈一次,出栈之后访问。 3 postorder:节点入栈2次,第二次出战后访问。 1classSolution {2public:3vector<int> preorderTraversal(TreeNode *root) {45vector<int>result;6stack<TreeNode*>stack;78TreeNode *p =root;910while( NULL != p ||...
preorderTraversal(result, root.right); } public void postorderTraversal(List<Integer> result, TreeNode root){ if(root==null) return; postorderTraversal(result, root.left); postorderTraversal(result, root.right); result.add(root.val);
1 public List<Node> preOrder(Node root){ 2 List<Node> res = new LinkedList<Node>(); 3 Stack<Node> stack = new Stack<Node>(); 4 stack.push(root); 5 while(root!=null||!stack.isEmpty()){ 6 while(root){ 7 res.add(root); 8 stack.push(root); 9 root=root.left; 10 } 11 ...