二叉树中如何求根节点到任意节点的路径?
生活随笔
收集整理的這篇文章主要介紹了
二叉树中如何求根节点到任意节点的路径?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
二叉樹中如何求任一節點的路徑呢?
思路
使用先序遍歷,處理的時候讓節點入棧,并且加上標志位即可。
使用另外的result保存最終的路徑。
函數
void pre_order(TreeNode * node,TreeNode *search,vector<TreeNode*> &path, vector<TreeNode*> &result,//返回路徑結果 int &finish)//判斷是否找到核心代碼
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/void pre_order(TreeNode * node,//正在遍歷的節點TreeNode *search,//搜索的節點vector<TreeNode*> &path, //節點路徑的棧(用vector實現)vector<TreeNode*> &result,//返回路徑結果 int &finish)//記錄是否找到節點search,找到是1,未找到是0{if(!node||finish==1)//為空或者找到則返回 return;path.push_back(node);//保存節點數值if(node==search){finish=1;result=path;//找到則節點路徑保存 } pre_order(node->left,search,path,result,finish);pre_order(node->right,search,path,result,finish);path.pop_back();//結束遍歷node時,node節點彈出path棧 }代碼應用
下面是應用:Leetcode236最近公共祖先題解
讀者可以利用本文中的方法來解決這道題,以此來夯實自己的代碼基礎,提高編程能力。
希望對你有幫助。
總結
以上是生活随笔為你收集整理的二叉树中如何求根节点到任意节点的路径?的全部內容,希望文章能夠幫你解決所遇到的問題。