前序遍歷-根左右:
迴圈到左子樹空,else轉右子樹,當乙個結點已經訪問右子樹時,該結點出棧
#include#include#include#include#includeusing namespace std;
struct treenode
};class solution //左子樹到底了
else
} return ans;
}};int main()//左子樹到底了
else
} return ans;
}};
後序遍歷-左右根:
後序非遞迴遍歷一般有兩種思路
①變左右根為根右左再取反
即先類似前序遍歷得到根右左的結果,然後再對結果取反,思路是簡單可行的,但是不方便對樹進行其他操作,只能看遍歷結果
class solution //左子樹到底了
else
} for(int i=ans.size()-1;i>=0;i--)
return fin;
}};
②當前結點沒有孩子或孩子都被訪問時訪問此結點
class solution
else
} return ans;
}};
前序中序後序遍歷遞迴非遞迴實現
根 左兒子 右兒子 definition for binary tree struct treenode void preorder treenode root,vector v 非遞迴遍歷時就是模擬棧,注意入棧順序即可 void preorder treenode root,vector v 左二...
前序 中序 後序 非遞迴 實現
1.簡述 void preorder node root 3.中序非遞迴 前序中的root主要作為中間變數使用。這裡的root的意義是下乙個要進棧的結點,初始值為根結點。while root不為空 棧不為空 void inorder node root else 4.後序非遞迴 root表示下乙個要...
前序 中序 後序 非遞迴 實現
1.簡述 void preorder node root 3.中序非遞迴 前序中的root主要作為中間變數使用。這裡的root的意義是下乙個要進棧的結點,初始值為根結點。while root不為空 棧不為空 else 4.後序非遞迴 root表示下乙個要處理的結點,初始化為根結點,per表示上一次剛...